首页 > Java > java教程 > 如何准确计算两个 Joda-Time 日期之间的天数?

如何准确计算两个 Joda-Time 日期之间的天数?

Linda Hamilton
发布: 2024-12-04 09:48:11
原创
215 人浏览过

How to Accurately Calculate the Number of Days Between Two Joda-Time Dates?

计算 Joda-Time 日期之间的天数

使用 Joda-Time 时,通常需要确定两个日期之间的天数差异。虽然 Days.daysBetween 方法提供了解决方案,但它并不总是能正确处理夏令时 (DST) 调整。

为了确保准确的日期计算,请使用以下方法:

Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays()
登录后复制

此代码使用 toLocalDate() 将开始和结束 DateTime 实例转换为 LocalDate,有效地忽略小时、分钟和秒

具有 DST 歧义的示例

考虑以下具有 DST 歧义的示例:

// 5am on October 20th to 1pm on October 21st, 2013, Brazil
DateTimeZone BRAZIL = DateTimeZone.forID("America/Sao_Paulo");
DateTime start = new DateTime(2013, 10, 20, 5, 0, 0, BRAZIL);
DateTime end = new DateTime(2013, 10, 21, 13, 0, 0, BRAZIL);

// Using withTimeAtStartOfDay()
System.out.println(Days.daysBetween(start.withTimeAtStartOfDay(),
                                   end.withTimeAtStartOfDay()).getDays());

// Using toLocalDate()
System.out.println(Days.daysBetween(start.toLocalDate(),
                                   end.toLocalDate()).getDays());
登录后复制

使用 withTimeAtStartOfDay() 会导致错误答案为 0,而 toLocalDate() 方法正确返回 1 day.

通过转换为 LocalDate,我们消除了 DST 造成的歧义,并获得更准确的天数差异。无论时区或夏令时的考虑如何,这种方法都能确保一致的结果。

以上是如何准确计算两个 Joda-Time 日期之间的天数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板