Java代码,用于计算日期范围内的中夜数(00:00:00)

我正在尝试编写一个 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

这只有一个.

它基本上要告诉我时间“00:00:00”在日期范围内发生了多少次.
请帮帮我.我尝试了很多方法,但没有一个正确.

解决方法

使用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++;
}

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...