Java从EDT到EST的时区过渡期

时间:2014-10-27 21:13:50

标签: java timezone dst

问题陈述:将“2014-11-02 01:00:15 EST”转换为GMT。

这似乎很容易。但是为什么下面的代码给出了错误的答案?

背景:

  • EDT又名GMT-4
  • EST aka GMT-5
  • 2014-11-02 01:00:15 EST == 2014-11-02 06:00:15 GMT
  • 如果我使用注释掉的日期字符串就可以了!!!
  • EDT(至2014年11月2日凌晨2点) - >凌晨2点我们去美国东部时间凌晨1点

代码示例:

ZoneId gmt = ZoneId.of("GMT");
//String from = "2014-11-02 01:00:15 GMT-05:00";
String from = "2014-11-02 01:00:15 EST";

final DateTimeFormatter dateTimeFormatterone = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
ZnedDateTime zonedDateTime = ZonedDateTime.parse(from, dateTimeFormatterone);
ZonedDateTime gmtzonedDateTime = zonedDateTime.withZoneSameInstant(gmt);
String result = gmtzonedDateTime.format(dateTimeFormatterone);

这就是结果。

result == "2014-11-02 05:00:15 GMT"

不应该     结果==“2014-11-02 06:00:15 GMT”

任何帮助都会很棒。我认为这是Java中的一个错误。但我也认为我在某处犯了错误。

由于 保罗

1 个答案:

答案 0 :(得分:0)

偏移的给定GMT缩写没有:。变化

String from = "2014-11-02 01:00:15 GMT-05:00";

String from = "2014-11-02 01:00:15 GMT-0500";

还有一些逻辑错误:

如果你在2014年11月2日凌晨2点从2点到1点,那么从6点到5号也是正确的,早上5点是正确的吗?