如何将 offsetTime 添加到 UTC 时间以获得正确的 ZonedDateTime?
How to add offsetTime to UTC time to get the right ZonedDateTime?
我想将 UTC 时间转换为 localisedDateTime 或 zonedDateTime。
我有以下输入:2013-07-10 02:52:49,-44.490947,171.220966
日期时间是 UTC 时区。
我得到了带纬度和经度的 zoneId,这给了我 Pacific/Auckland
。
有了这个,我尝试从时间戳中获取 zonePacific/Auckland
的本地时间,并期望如下所示 conversion 我正在寻找的结果。
玩我的时间戳我得到:
2013-07-10T02:52:49+12:00[Pacific/Auckland]
。
但我正在寻找以下输出:
2013-07-10T14:52:49
我不认为操纵字符串将其更改为数字并手动添加是正确的答案。
我相信我们可以用日期来做到这一点,但我是 Java 的新手,在网上冲浪了几个小时后,我还没有找到我的解决方案。
下面的解决方案虽然看起来有效,但显示了日期 2013-07-9
,我的代码中也是如此。因此,如果网站显示我期望的时间,为什么我们没有得到相同的结果?
当您捕获日期时间时
2013-07-10T02:52:49+12:00[Pacific/Auckland]
,将其捕获为 ZonedDateTime,以便它的时区为 UTC+12:00。
关于使用 dateTime.withZoneSameInstant(ZoneId.of("UTC"));
将日期时间转换为 UTC+0 HRS,结果为 2013-07-10T14:52:49
如果您将上述数据时间作为字符串,则可以将其转换为 UTC ZonedDateTime,如下所示。
String time = "2013-07-10T02:52:49+12:00[Pacific/Auckland]";
ZonedDateTime zdt = ZonedDateTime.parse(time);
ZoneId zoneId = zdt.getZone();
System.out.println(zdt);
System.out.println(zdt.withZoneSameInstant(zoneId).toLocalDateTime());
zdt = zdt.withZoneSameInstant(ZoneId.of("UTC"));
System.out.println(zdt);
输出:
2013-07-10T02:52:49+12:00[Pacific/Auckland]
2013-07-10T02:52:49
2013-07-09T14:52:49Z[UTC]
我想将 UTC 时间转换为 localisedDateTime 或 zonedDateTime。
我有以下输入:2013-07-10 02:52:49,-44.490947,171.220966
日期时间是 UTC 时区。
我得到了带纬度和经度的 zoneId,这给了我 Pacific/Auckland
。
有了这个,我尝试从时间戳中获取 zonePacific/Auckland
的本地时间,并期望如下所示 conversion 我正在寻找的结果。
玩我的时间戳我得到:
2013-07-10T02:52:49+12:00[Pacific/Auckland]
。
但我正在寻找以下输出:
2013-07-10T14:52:49
我不认为操纵字符串将其更改为数字并手动添加是正确的答案。
我相信我们可以用日期来做到这一点,但我是 Java 的新手,在网上冲浪了几个小时后,我还没有找到我的解决方案。
下面的解决方案虽然看起来有效,但显示了日期 2013-07-9
,我的代码中也是如此。因此,如果网站显示我期望的时间,为什么我们没有得到相同的结果?
当您捕获日期时间时
2013-07-10T02:52:49+12:00[Pacific/Auckland]
,将其捕获为 ZonedDateTime,以便它的时区为 UTC+12:00。
关于使用 dateTime.withZoneSameInstant(ZoneId.of("UTC"));
将日期时间转换为 UTC+0 HRS,结果为 2013-07-10T14:52:49
如果您将上述数据时间作为字符串,则可以将其转换为 UTC ZonedDateTime,如下所示。
String time = "2013-07-10T02:52:49+12:00[Pacific/Auckland]";
ZonedDateTime zdt = ZonedDateTime.parse(time);
ZoneId zoneId = zdt.getZone();
System.out.println(zdt);
System.out.println(zdt.withZoneSameInstant(zoneId).toLocalDateTime());
zdt = zdt.withZoneSameInstant(ZoneId.of("UTC"));
System.out.println(zdt);
输出:
2013-07-10T02:52:49+12:00[Pacific/Auckland]
2013-07-10T02:52:49
2013-07-09T14:52:49Z[UTC]