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

问题:

如何找出两个Joda-Time DateTime个实例之间的差异?
“天的差异”我的意思是,如果开始是星期一,结束是在星期二,我预计返回值为1,不管开始和结束日期的小时/分钟/秒。
 如果在晚上开始,早上结束,Days.daysBetween(start, end).getDays()给我0。
我也和其他日期字段也有同样的问题,所以我希望有一个通用的方式来“忽略”不太重要的领域。
换句话说,3月2日至4日的月份也将是1,14时45分至15时12分之间的时间也是1。但是14:01和14:55之间的时差将为0。

回答:

令人烦恼的是,withTimeAtStartOfDay答案是错误的,但只是偶尔。你要:

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

事实证明,“午夜/开始的一天”有时意味着1am(在某些地方这样做的夏令时间),哪些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回避。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Number of days between two dates in Joda-Time

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 2 = 3