Nae*_*han 5 java time-format localtime
我有一个航班行程计划,需要获取出发时间和到达时间之间的差额。我从数据中获得这些指定的时间作为String。这是我的问题:
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));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
176
-329
Run Code Online (Sandbox Code Playgroud)
第一次返回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
Run Code Online (Sandbox Code Playgroud)
这些是使我们从EDI飞往SYD的3航班。上面输出的格式是(城市,出发时间,航班号,目的地,到达时间)。
24小时内的总分钟数为1440。因此,当差异小于零(但您需要一个正数)时,则应在结果中加一整天:
int diff = MINUTES.between(arrival, a);
if (diff < 0) {
diff += 1440;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法实现相同的目的:
int diff = (MINUTES.between(arrival, a) + 1440) % 1440;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1608 次 |
最近记录: |