Java 减去本地时间(LocalTime)

50

我有两个LocalTime对象:

LocalTime l1 = LocalTime.parse("02:53:40");
LocalTime l2 = LocalTime.parse("02:54:27");

我该如何在几分钟内找到它们之间的不同之处?


1
请注意,所有现有的答案都假定时间在同一日历日内。也就是说,23:58和00:03之间的差异将被给出为-1435分钟,而不是人们可能期望的5分钟。(这可能是有意设计的,因为LocalTime不知道各自日期的长度) - meriton
4个回答

59

使用API中描述的untilbetween

import java.time.LocalTime;
import static java.time.temporal.ChronoUnit.MINUTES;

public class SO {
    public static void main(String[] args) {
        LocalTime l1 = LocalTime.parse("02:53:40");
        LocalTime l2 = LocalTime.parse("02:54:27");
        System.out.println(l1.until(l2, MINUTES));
        System.out.println(MINUTES.between(l1, l2));
    }
}

0
0

->

0
0


47

自Java 8以来,您可以使用Duration类。我认为这提供了最优雅的解决方案:

long elapsedMinutes = Duration.between(l1, l2).toMinutes();

9

我使用 ChronoUnit 来完成这个操作。

long minutesBetween = ChronoUnit.MINUTES.between(l1,l2);

示例

    LocalTime localTime=LocalTime.now();
    LocalTime localTimeAfter5Minutes=LocalTime.now().plusMinutes(5);
    Long minutesBetween=ChronoUnit.MINUTES.between(localTime,localTimeAfter5Minutes);
    System.out.println("Diffrence between time in munutes : "+minutesBetween);

输出

Diffrence between time in munutes : 5

0
你可以这样做:
long dif = Math.abs (l1.getLocalMillis () - l2.getLocalMillis ());
TimeUnit.MINUTES.convert (dif, TimeUnit.MILLISECONDS);

5
我认为在使用新的日期/时间 API 中不再应该以毫秒计算。 - keuleJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接