我正在尝试编写一个
java块来查找特定日期范围内的中午数.
例如:
开始日期:05/01/2014 00:00:00
截止日期:05/03/2014 00:00:00
这个范围有3个中午.
要么
开始日期:05/01/2014 00:00:00
截止日期:05/02/2014 23:59:59
这只有一个.
解决方法
使用Joda-Time的答案是不正确的.因为@khriskooper已经注意到了之间的中午数
2014-05-01 00:00:00 and 2014-05-02 23:59:59
不是一个,而是两个中午!
所以这里使用Joda-Time进行校正(未经测试),但它也可以是支持日程计算的任何其他库(对于旧的Java-pre8不适用).我省略了时区细节,因为我不认为它与问题真正相关.如果OP想要他可以用DateTime替换LocalDateTime并应用时区.
LocalDateTime ldt1 = new LocalDateTime(2014,5,1,0); LocalDateTime ldt2 = new LocalDateTime(2014,2,23,59,59); int days = Days.daysBetween(ldt1.toLocalDate(),ldt2.toLocalDate()).getDays(); if (ldt1.toLocalTime().equals(new LocalTime(0,0))) { days++; }