Java Joda-Time中两个日期之间的天数
如何找到两个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, BrazilDateTimeZone 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
回避了整个问题。
以上是 Java Joda-Time中两个日期之间的天数 的全部内容, 来源链接: utcz.com/qa/431889.html