将 LocalDateTime UTC 转换为 Europe/Rome 给了我错误的结果
Convert LocalDateTime UTC to Europe/Rome gave me wrong result
我试图搜索同样的问题,但没有找到我做错了什么。
我需要将 UTC LocalDateTime 转换为 Europe/Rome LocalDateTime。
我正在遵循我在 SO 上找到的这种方法,但我得到了错误的结果:
ZonedDateTime zonedDateTime = LocalDateTime.of(2020, 01, 01, 15, 0, 0).atZone(ZoneId.of("UTC"));
System.out.println(zonedDateTime);
ZonedDateTime current = zonedDateTime.withZoneSameInstant(ZoneId.systemDefault());
System.out.println(current);
System.out.println(current.toLocalDateTime());
我希望“转换后的时间”是 17:00,但我得到了这个结果。
2020-01-01T15:00Z[UTC]
2020-01-01T16:00+01:00[Europe/Rome]
2020-01-01T16:00
谢谢
I'm expecting the "converted time" to be 17:00 but I'm having this result.
我不确定你为什么这么期待。 16:00 是正确答案。
也许您没有注意到这是 1 月 ,当时欧洲大陆处于 冬令时,比 UTC 时间早 1 小时。
1 月 1 日 15:00:00 UTC 时间意味着罗马 +1 小时。这里没办法得到17:00:00。也许可以在夏季约会时尝试一下。那会让你有 2 小时的时差。
您的代码没有任何问题。这就是如何做到这一点,这就是为什么它给你 16:00:00(因为这是正确的答案)。
我试图搜索同样的问题,但没有找到我做错了什么。
我需要将 UTC LocalDateTime 转换为 Europe/Rome LocalDateTime。 我正在遵循我在 SO 上找到的这种方法,但我得到了错误的结果:
ZonedDateTime zonedDateTime = LocalDateTime.of(2020, 01, 01, 15, 0, 0).atZone(ZoneId.of("UTC"));
System.out.println(zonedDateTime);
ZonedDateTime current = zonedDateTime.withZoneSameInstant(ZoneId.systemDefault());
System.out.println(current);
System.out.println(current.toLocalDateTime());
我希望“转换后的时间”是 17:00,但我得到了这个结果。
2020-01-01T15:00Z[UTC]
2020-01-01T16:00+01:00[Europe/Rome]
2020-01-01T16:00
谢谢
I'm expecting the "converted time" to be 17:00 but I'm having this result.
我不确定你为什么这么期待。 16:00 是正确答案。
也许您没有注意到这是 1 月 ,当时欧洲大陆处于 冬令时,比 UTC 时间早 1 小时。
1 月 1 日 15:00:00 UTC 时间意味着罗马 +1 小时。这里没办法得到17:00:00。也许可以在夏季约会时尝试一下。那会让你有 2 小时的时差。
您的代码没有任何问题。这就是如何做到这一点,这就是为什么它给你 16:00:00(因为这是正确的答案)。