1710=110分钟

iyr7buue  于 2021-07-13  发布在  Java
关注(0)|答案(3)|浏览(413)

java中有什么方法可以做到这一点吗?我想让它这样计算时间。0950-0900是50分钟,但是1700-1610=50分钟而不是90分钟,1900-1710=110而不是190分钟。谢谢:)

zaqlnxep

zaqlnxep1#

看看duration(javase8中引入的新日期和时间api的一部分)。
例如(未经测试):

long minutes = Duration.between(toLocalTime(1710), toLocalTime(1900)).toMinutes();

private LocalTime toLocalTime(int time){
  return LocalTime.of(time / 100, time % 100);
}
zmeyuzjn

zmeyuzjn2#

您可以使用Java8中新的JavaDateAPI。

LocalTime start = LocalTime.parse("19:00");
LocalTime end = LocalTime.parse("17:10");
Duration elapsed = Duration.between(start, end);
System.out.println(elapsed.toMinutes());

如果您切换“开始”和“结束”,这将输出:-110和110。

yzuktlbb

yzuktlbb3#

如果你只有整数,你不关心验证,你可以做这一切,而不触及时间部分:

public int getMinutesBetween(int time1, int time2) {
    // Extract hours and minutes from compound values, which are base-100,
    // effectively.
    int hours1 = time1 / 100;
    int hours2 = time2 / 100;
    int minutes1 = time1 % 100;
    int minutes2 = time2 % 100;
    // Now we can perform the arithmetic based on 60-minute hours as normal.
    return (hours2 - hours1) * 60 + (minutes2 - minutes1);
}

但是,我强烈建议您使用更合适的表示法-这些不仅仅是正常的 int 值。。。它们实际上是“一天中的时间”值,所以 LocalTime (在joda时间或java 8的 java.time )是最合适的代表。

相关问题