计算时间差的公式

时间:2017-04-23 06:12:49

标签: java formula

我有几小时和几分钟的时间。

time[0]: hour1
time[1]: minutes1
time[2]: hour2
time[3]: minutes2

我已经创建了这个公式来计算时间差(以分钟为单位):

((time[2] % 12 - time[0] % 12) * 60) + (time[3] - time[1])

我想知道是否有任何边缘案例。另外,创建这个公式时你会遵循什么范式(尽管它是非常基本的)?

2 个答案:

答案 0 :(得分:0)

您可以使用Date课程表达您的时间,然后计算差异,然后以您选择的时间单位表达。

使用这种方法,你可以避免很多棘手的情况(两天不同,时间变化等两次之间的差异)。

我建议您阅读此post和此post,但对StackOverflow上的同一问题有很多答案;)

注意:在使用{{1}}之前,请看一下这篇优秀的帖子:What's wrong with Java Date & Time API?

答案 1 :(得分:0)

您的代码假设天数为24小时。并非所有日子都是24小时。夏令时(DST)等异常的平均天数不同。

此外,我们已经为此构建了类。无需自己动手。 LocalTime类表示没有日期且没有时区的时间。 Duration代表未附加到时间轴的时间跨度。

LocalTime start = LocalTime.of( 8 , 0 ) ;
LocalTime stop = LocalTime.of( 14 , 0 ) ;

Duration d = Duration.between( start , stop );
long minutes = d.toMinutes() ;  // Entire duration as a total number of minutes. 

该代码也假装这些日子是24小时。

对于实际的时间跨度,请使用ZonedDateTime课程以包含日期和时区以及您的时间。