【问题标题】:Java subtract LocalTimeJava减去LocalTime
【发布时间】:2015-04-05 21:13:25
【问题描述】:

我有两个LocalTime 对象:

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

我怎样才能发现它们之间的分钟数不同?

【问题讨论】:

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

标签: java localtime


【解决方案1】:

使用untilbetween,如api 所述

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

【讨论】:

    【解决方案2】:

    从 Java 8 开始,您可以使用 Duration 类。我认为这是最优雅的解决方案:

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

    【讨论】:

      【解决方案3】:

      我这样做 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
      

      【讨论】:

        【解决方案4】:

        你可以这样做:

        long dif = Math.abs (l1.getLocalMillis () - l2.getLocalMillis ());
        TimeUnit.MINUTES.convert (dif, TimeUnit.MILLISECONDS);
        

        【讨论】:

        • 我认为我们不应再使用新的日期/时间 API 以毫秒为单位进行计算
        猜你喜欢
        • 2020-05-23
        • 1970-01-01
        • 2011-03-31
        • 2018-10-05
        • 2016-12-26
        • 2012-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多