【发布时间】:2020-03-17 04:50:13
【问题描述】:
在 Java 中遇到了一个小问题:我有两个字符串,分别代表一个日期(例如“2019-11-10”)和一个时间(例如“01:23:45.123”)。将它们转换为 UTC 时间戳很容易,但有一个问题:
日期以当地时区给出,例如“America/New_York”,而时间以 UTC 给出,因此以下信息...
date = "2019-11-10"、time="01:23:45.123"(假设日期部分的本地时区为"America/New_York")
...实际上是 UTC 时间 "2019-11-11 01:23:45.123"(因为只有纽约日期为“2019-11-10”)。
Java Time API 或 joda time 是否提供任何方便的方法来进行此转换,同时牢记 DST 等细节?有没有(相对)简单的方法可以做到这一点?
编辑:
也许这有点不清楚。让我试着从另一面解释一下:
假设我的 DateTime x(UTC 时间)为"2019-11-11 01:23:45.123"。
然后我可以通过简单地将 x 转换为适当的时区并相应地格式化来获取日期部分 y(如“America/New_York”中所示) -> "2019-11-10"。
我还可以通过简单地相应地格式化来获取时间部分 z(如 UTC 所示) - "01:23:45.123"。
现在,假设我有 y 和 z - 我如何获得 x?
编辑 2:
我刚刚意识到,这将永远不会完美地工作。原因:
UTC“2019-11-04 04:01:00.000”-> 美国/纽约:“2019-11-03 23:01”
UTC“2019-11-03 04:01:00.000”-> 美国/纽约:“2019-11-03 00:01”
所以,如果我只得到信息“美国/纽约的日期”是“2019-11-03”加上“UTC 时间”是“04:01:00.000”,那么实际上有两种可能的解决方案,而不仅仅是一个.
【问题讨论】:
-
你检查了吗
ZonedDateTime -
在时区中给出日期是什么意思?
-
我试图澄清一下...
标签: java time jodatime java-time