java - 夏令时的 plusHours 和 plusDays 之间的 JodaTime 差异

标签 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

最佳答案

并非所有本地的日子都是 24 小时。假设您在美国太平洋时区工作,那一天有 25 个小时,因为回退夏令时转换。

调用 plusHours(24) 添加 24 小时的精确持续时间。

调用 plusDays(1) 会增加日历日,即使这一天不是恰好 24 小时。

关于java - 夏令时的 plusHours 和 plusDays 之间的 JodaTime 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26873050/

相关文章:

java - 尝试在 android 中捕获错误

java - 当运行具有相同变量名执行的两个测试时,JUnit 失败

datetime - 夏令时和时区最佳实践

javascript - Spring Maven Angjular JS 问题

java - 如何添加对嵌入消息的 react JDA

java - 如何在scala中使用flatMap来对一组 "vals"进行分组

java - 使用 JodaTime/scala 的时区转换时间

java - Joda MutableDateTime 的 setDate(DateTime) 方法如何工作?

python - 将 timedelta 添加到本地日期时间,跨 DST 转换的意外行为

Java时间忽略夏令时规则