JodaTime在加号时间和加号日期之间的差异为夏令时

时间:2014-11-11 19:36:31

标签: java jodatime dst

根据JodaTime Javadoc,plusHours和plusDays在为日期添加时间时都处理DST调整。但是,根据我的测试,添加一天的小时数相对于添加1天会产生不同的结果。有人可以向我解释为什么下面的代码给出了下面的输出吗?

代码:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = format.parse("2014-11-01T02:00:00.000-0700");

System.out.println("origDate:  " + date);
System.out.println("plusDays:  " + new DateTime(date).plusDays(1).toDate());
System.out.println("plusHours: " + new DateTime(date).plusHours(24).toDate());

输出:

origDate:  Sat Nov 01 02:00:00 PDT 2014
plusDays:  Sun Nov 02 02:00:00 PST 2014
plusHours: Sun Nov 02 01:00:00 PST 2014

1 个答案:

答案 0 :(得分:4)

并非所有当地时间都有24小时。假设您在美国太平洋时区工作,那个特定日期有25个小时,因为夏令时的后退过渡。

调用plusHours(24)会增加24小时的确切持续时间。

呼叫plusDays(1)会增加日历日,即使这一天不是24小时。