我只想以分钟为单位计算时差,希望已经有一个可以正确执行的类。
因此,我从网站获得的值仅是小时和分钟(例如:事件始于: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);
}


您必须对日光节约有所注意。如果夏令时在两个事件之间开始或结束,则您的计算可能会花费一个小时。但是,如果不知道日期或时区信息,就无法解决。

10-07 14:00