我只想以分钟为单位计算时差,希望已经有一个可以正确执行的类。
因此,我从网站获得的值仅是小时和分钟(例如:事件始于:20:30,结束于03:30)。
当我使用“ Duration.between”时,我得到了不正确的值-当第一个值大于第二个值或第二个值是午夜之后时,就会发生这种情况。
我想我可以使用'ifs'和'elses'来做到这一点,但是我确信已经有一个类或方法可以用更优雅的方式解决问题,但是我找不到。
这是我的代码:仅当第二个值大于第一个值时,它才起作用:
LocalTime eventStarts = LocalTime.now();
LocalTime eventEnds = LocalTime.now();
eventStarts = eventStarts.withHour(22).withMinute(00);
eventEnds = eventEnds.withHour(03).withMinute(00);
Duration durationBetweenEvents = Duration.between(eventStarts, eventEnds);
System.out.println(durationBetweenEvents.toMinutes());
在这种情况下,我得到“ -1140”
最佳答案
只需将以下内容添加到您的代码中即可。
if (durationBetweenEvents.isNegative()) {
durationBetweenEvents = durationBetweenEvents.plusDays(1);
}
您必须对日光节约有所注意。如果夏令时在两个事件之间开始或结束,则您的计算可能会花费一个小时。但是,如果不知道日期或时区信息,就无法解决。