Joda时间从dateTime中获取正确的时间



我有一个简单的代码:

    DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm yyyy-MM-dd");
    DateTime dateTime = formatter.withZone(DateTimeZone.forID("America/New_York")).parseDateTime("08:30 2015-06-01");
    DateTime dateTime2 = formatter.withZone(DateTimeZone.forID("America/New_York")).parseDateTime("08:30 2015-12-01");

现在是闰年。当我点击toString方法时,我得到了这样的东西:

2015-06-01T08:30:00.000-04:00
2015-12-01T08:30:00.000-05:00

这是正确的,我们可以看到UTC时间偏移。但当我打电话给getHourOfDay时,我得到了8,而不是预期的4/3。我做错了什么?请在这里分享一些建议。

好吧,来自DateTimeFormatter#withZone():的Javadoc

返回一个新的格式化程序,该格式化程序将优先使用指定的区域,而不是打印对象的区域或解析中的默认区域。

因此,您告诉格式化程序在解析AND输出时使用特定的时区,而您给它的输入不包含时区,所以这是预期的结果。本质上你说:

  1. 这是一个没有时区的日期字符串,假设美国/纽约进行解析
  2. 将日期转换回字符串,时区为America/New_York

它就是这么做的。

相关内容

  • 没有找到相关文章

最新更新