我试图确定两组日期重叠的秒数。如果日期不重叠,我的方法将返回 0。
@Test
public void calculateOverlapInSeconds() {
LocalDateTime now = LocalDateTime.now();
// Larger window of time
LocalDateTime startTime1 = now.minusSeconds(15);
LocalDateTime endTime1 = now.plusSeconds(15);
// Smaller window of time
LocalDateTime startTime2 = now.minusSeconds(5);
LocalDateTime endTime2 = now.plusSeconds(5);
long i = getOverlapInSeconds(startTime2, endTime2, startTime1, endTime1);
Assert.assertEquals(i, 10);
}
我试图按照这篇文章:https : //wmfexcel.com/2014/10/25/how-to-calculate-number-of-overlapping-days-for-two-periods/
public long getDifferenceInSeconds(LocalDateTime startTime2, LocalDateTime endTime2, LocalDateTime startTime1, LocalDateTime endTime1) {
LocalDateTime minStartTime = (startTime2.isBefore(startTime1) ? startTime2 : startTime1);
LocalDateTime minEndTime = (endTime2.isBefore(endTime1) ? endTime2 : endTime1);
long seconds = minStartTime.until(minEndTime, ChronoUnit.SECONDS);
return seconds > 0 ? seconds : 0;
}
这目前不起作用。如何计算 2 个日期集之间的时间重叠(以秒为单位)?
更新的工作代码:
public long getDifferenceInSeconds(LocalDateTime startTime2, LocalDateTime endTime2, LocalDateTime startTime1, LocalDateTime endTime1) {
LocalDateTime maxStartTime =
startTime2.isAfter(startTime1) ? startTime2 : startTime1;
LocalDateTime minEndTime = (endTime2.isBefore(endTime1) ? endTime2 : endTime1);
long seconds = maxStartTime.until(minEndTime, ChronoUnit.SECONDS);
return seconds > 0 ? seconds : 0;
}
噜噜哒
相关分类