【问题标题】:How to get the difference between two JodaTime LocalTime stamps?如何获得两个 JodaTime 本地时间戳之间的差异?
【发布时间】:2014-03-13 09:27:05
【问题描述】:

我使用JodaTime LocalTime 来指定时间。如何获得两次之间的分钟差?

LocalTime startT = new LocalTime(6,30);
LocalTime endT = new LocalTime(12,15);

// LocalTime duration = this.endT.minusMinutes(startT);
// int durationMinutes = duration.getMinutes();

【问题讨论】:

    标签: java jodatime localtime


    【解决方案1】:

    如果你问

    如何获得两次之间的分钟差?

    然后我会想到以下更直观的解决方案:

    LocalTime startT = new LocalTime(6,30);
    LocalTime endT = new LocalTime(12,15);
    int minutes = Minutes.minutesBetween(startT, endT).getMinutes(); // 345m = 6h - 15m
    

    表达式

    Period.fieldDifference(startT, endT).getMinutes()
    

    只会产生-15,这意味着不考虑小时差,因此不会将小时转换为分钟。如果第二个表达式确实是您想要的,那么问题应该是这样的:

    如何区分两个LocalTime-instances 的分钟部分?

    为 Java-8 更新:

    LocalTime startT = LocalTime.of(6,30);
    LocalTime endT = LocalTime.of(12,15);
    
    long minutes = ChronoUnit.MINUTES.between(startT, endT);
    
    System.out.println(minutes); // output: 345
    
    // Answer to a recommendation in a comment:
    // Attention JSR-310 has no typesafety regarding units (a bad design choice)
    // => UnsupportedTemporalTypeException: Unsupported unit: Minutes
    minutes = Duration.between(startT, endT).get(ChronoUnit.MINUTES);
    

    【讨论】:

    • 在 java 8 中:java.time.Duration.between(startLocalTime, endLocalTime).get(ChronoUnit.MINUTES);
    • @MickaëlGauvin 感谢您的努力,但请查看我对您的评论的更新答复。
    • 是的,所有的 ChronoUnits 都没有被 get 方法处理。谢谢
    【解决方案2】:

    如果我正确理解了您的问题,以下应该可以完成工作:

    Period diff = Period.fieldDifference(startT, endT);
    int minutes = diff.getMinutes();  
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2011-04-01
    • 2016-10-27
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多