当前位置: 首页 > 面试题库 >

Java Joda-Time中两个日期之间的天数

钮安歌
2023-03-14
问题内容

如何找到两个Joda-Time DateTime实例之间的天数差异?“天数差异”是指如果开始时间是星期一,结束时间是星期二,则无论返回日期和开始时间/结束时间是小时/分钟/秒,我都希望返回值为1。

Days.daysBetween(start, end).getDays() 如果开始时间是晚上,结束时间是上午,则给我0。

我在其他日期字段上也遇到了同样的问题,因此我希望有一种通用的方法可以“忽略”重要性较低的字段。

换句话说,2月至3月4日之间的月份也将为1,而14:45至15:12之间的时间也会为1。但是14:01和14:55之间的时差为0。


问题答案:

令人讨厌的是,withTimeAtStartOfDay答案是错误的,但只是偶尔出现。你要:

Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays()

事实证明,“midnight/start 的开始时间”有时是指凌晨1点(某些地方以这种方式实现夏令时),而Days.daysBetween无法正确处理。

// 5am on the 20th to 1pm on the 21st, October 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);
System.out.println(daysBetween(start.withTimeAtStartOfDay(),
                               end.withTimeAtStartOfDay()).getDays());
// prints 0
System.out.println(daysBetween(start.toLocalDate(),
                               end.toLocalDate()).getDays());
// prints 1

通过走出去LocalDate回避了整个问题。



 类似资料:
  • 问题内容: 查看两个日期之间有多少整天的最短方法是什么?这就是我现在正在做的。 问题答案: 假设您确实有两个日期对象,则可以从另一个对象中减去一个,然后查询结果对象的天数: 它也适用于日期时间-我认为它会四舍五入到最近的日期:

  • 问题内容: 我想比较我的Android应用程序的两个日期,但是遇到了一个非常奇怪的问题。 例如: 如果我将日期设置为127天之前: 然后将其与当前日期(两天之间)进行比较 它将返回22,这根本不是预期的结果。 我做错什么了吗?还是班上有问题? 问题答案: 请参考此代码,这可能会对您有所帮助。

  • 我需要计算两个日期之间的天数差。 最后我需要知道某个日期是否已经到期。 但我想不出解决办法。 字段的类型为datetime 服务ts 检查许可证。ts

  • 问题内容: 如何使用PHP查找两个日期之间的天数? 问题答案:

  • 我有两次约会。一个是以YYYYMMDD格式从其他应用程序的表中检索的,第二个日期是本地时间,我需要这两个日期之间的天数/月/年。 我试过了 但这给了我一些乱七八糟的数字。 变量$t=Fri Dec31 00:00:00 9999 变量$今天=Wed Feb19 14:40:55 2020 产出:25182094888 有什么想法吗?提前谢谢。

  • 问题内容: 我的日期以yyyy-mm-dd(或典型的MySQL“日期”格式)存储在我的MySQL表中。我如何才能知道在那之前还剩下整整几天的时间? 例如,如果我有: 它会说: 问题答案: 在PHP中: 在MySQL中: 或如@coreyward所述(在MySQL中):