我有以下代码使用Joda来计算任何给定日期的偏移量,例如
int offset = DateTimeZone.forID("EST").getOffset(new DateTime(2013,8,1,1,1));
这将给我抵消-18000000。但是对于:
int offset = DateTimeZone.forID("EST").getOffset(new DateTime(2012,12,1,1,1));
这也给我偏移-18000000。
看起来没有计算日光。谁知道为什么?感谢。
我正在使用Joda-time-2.3
答案 0 :(得分:3)
您明确告诉它忽略夏令时。
EST是东部标准时间,与EDT明显不同,后者是夏令时。
相反,请尝试使用ID US / Eastern,所以
DateTimeZone.forID("US/Eastern")
可以找到可用时区的完整列表here。 US / Eastern是America / New_York的别名
答案 1 :(得分:0)
您需要提供时区ID - 而不是时区“半”的缩写。因此,例如,America/New_York
是东部时间的时区ID的一个示例(还有其他时区,对于时区,现在可能像纽约,但不是历史上的等等)。
import org.joda.time.*;
class Test {
public static void main(String[] args) {
DateTimeZone zone = DateTimeZone.forID("America/New_York");
System.out.println(zone.getOffset(new DateTime(2013,8,1,1,1)));
System.out.println(zone.getOffset(new DateTime(2012,12,1,1,1)));
}
}
输出:
-14400000
-18000000
你应该尽可能远离缩略形式 - 它们是模棱两可的(非独特的),通常只定义时区的一部分。 ICK。