java - LocalTime() 两次之间的差异

标签 java java-8 localtime time-format zoneddatetime

我有一个航类行程计划,我需要在其中获取出发时间和到达时间之间的差异。我从数据中获取这些指定时间作为字符串。这是我的问题:

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

public class test2 {
public static void main(String[] args) {

    DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("HHmm");
    LocalTime departure = LocalTime.parse("1139", dateFormat);
    LocalTime arrival = LocalTime.parse("1435", dateFormat);
    LocalTime a = LocalTime.parse("0906", dateFormat);
    System.out.println(MINUTES.between(departure, arrival));
    System.out.println(MINUTES.between(arrival, a));
}
}

输出:

176
-329

第一次返回11:39和14:35的差就好了。但是第二个差异只有 5 个小时,而应该是 19 个小时。我该如何解决这个问题,我在这里做错了什么?

如有任何帮助,我们将不胜感激。

编辑:我正在使用图表来存储我的数据。两个机场之间的最短路线示例如下:

Route for Edinburgh to Sydney
1 Edinburgh, 1139, TK3245, Istanbul, 1435
2 Istanbul, 0906, TK4557, Singapore, 1937
3 Singapore, 0804, QF1721, Sydney, 1521

这些是我们从 EDI 到 SYD 的 3 个航类。上面输出的格式是(城市,出发时间,航类号,目的地,到达时间)。

最佳答案

24 小时的总分钟数是 1440。所以当差值小于零(但你需要一个正值)时,你应该在结果中加上一整天:

int diff = MINUTES.between(arrival, a);
if (diff < 0) {
    diff += 1440;
}

你可以使用这个实现同样的事情:

int diff = (MINUTES.between(arrival, a) + 1440) % 1440;

关于java - LocalTime() 两次之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53254475/

相关文章:

javascript - 我可以使用 Nashorn 在新引擎作用域中调用函数吗?

Java 编译器提示未报告的 IOException

c++ - localtime_r 在程序退出前消耗了一些内存

c++ - 如何在C++中使用localtime正确初始化时间?

java - 布局小不被识别/不工作

Java:我的 input.readObject() 是否在写入或读取时被截断?

java - 在java 8中迭代List并在迭代时调用另一个函数

java - 两个本地时间的平均值

java - Web 服务请求忽略基本 WSDL XML 元素限制

java - 使用 ActivityLifecycleCallbacks 自动记录 Android 生命周期事件?