我有这个简单的代码:
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。我究竟做错了什么?请在这里分享一些建议。
答案 0 :(得分:1)
嗯,来自DateTimeFormatter#withZone()
的Javadoc:
返回一个新的格式化程序,它将优先使用指定的区域,而不是打印对象的区域,或者是解析的默认区域。
所以,你告诉格式化程序在解析和输出时使用特定的时区,你给它的输入不包含时区,所以这是预期的结果。实质上你说:
这就是它所做的。