gpt4 book ai didi

java - 时间差给出错误的值

转载 作者:行者123 更新时间:2023-12-01 21:15:39 25 4
gpt4 key购买 nike

我想获得Java中两个时间值之间的差异。下面是相同的代码片段:

    DateFormat sdf = new SimpleDateFormat("hh:mm");
Date date1 = sdf.parse("11:45");
Date date2 = sdf.parse("12:00");
System.out.println(""+(date2.getTime()-date1.getTime())/60000);

date1 = sdf.parse("12:45");
date2 = sdf.parse("13:00");
System.out.println(""+(date2.getTime()-date1.getTime())/60000);

date1 = sdf.parse("13:00");
date2 = sdf.parse("13:15");
System.out.println(""+(date2.getTime()-date1.getTime())/60000);

三种情况分别输出:输出1:-705输出2:735输出3:15

我不明白为什么它的值是错误的,因为在所有三种情况下它都应该是 15。

最佳答案

第一个也是最大的错误:

您使用 12 小时制(符号 h),但符号 H 就可以了。

另一个更微妙的错误:

使用SimpleDateFormat容易出错,因为它隐式使用时区(并且结果可以通过 Daylight Saving Time 开关更改,请参阅 Europe/London 在 1970 年夏令时(您的隐式默认年份)的情况)。

因此我建议使用更现代的 API。例如内置 java.time包( Tutorial )在 Java SE 8 中及其LocalTimeChronoUnit类。

ChronoUnit.MINUTES.between(LocalTime.parse("11:45"), LocalTime.parse("12:00"))

关于java - 时间差给出错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40215694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com