我试图确定两组日期重叠的秒数。如果日期不重叠,我的方法将返回 0。@Testpublic 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;}
1 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
那么你里面的代码getDifferenceInSeconds
得到最早的开始时间,但你想使用最晚的开始时间。您可以更改以下内容:
LocalDateTime minStartTime = (startTime2.isBefore(startTime1) ? startTime2 : startTime1);
至:
LocalDateTime maxStartTime = startTime2.isAfter(startTime1) ? startTime2 : startTime1;
添加回答
举报
0/150
提交
取消