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”。 请帮助我。 我尝试了很多方法,但没有一个正确。
使用乔达时间的答案是不正确的。 正如@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, 0, 0);
LocalDateTime ldt2 = new LocalDateTime(2014, 5, 2, 23, 59, 59);
int days = Days.daysBetween(ldt1.toLocalDate(), ldt2.toLocalDate()).getDays();
if (ldt1.toLocalTime().equals(new LocalTime(0, 0))) {
days++;
}
我只会计算日期(实际日期),如果最早日期的时间为00:00:00,则添加一个日期。
开始日期:05/01/2014 00:00:00结束日期:05/03/2014 00:00:00
要么
开始日期:05/01/2014 00:00:00结束日期:05/02/2014 23:59:59
也,
开始日期:5/01/2014 23:59:59结束日期:5/02/2014 00:00:01
一种选择是使用乔达时间库:
DateTimeZone zone = DateTimeZone.forID("America/New_York");
int days = Days.daysBetween(new DateTime(startDate, zone), new DateTime(endDate, zone)).getDays();
我认为这是最简单的方法。 缺点是你需要多一个图书馆..
希望这可以帮助!
链接地址: http://www.djcxy.com/p/36673.html上一篇: Java code to calculate number of mid nights (00:00:00) in a date range