Java 计算时间差的公式

Java 计算时间差的公式,java,formula,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]) 我想知道是否有任何边缘的情况下,这一点。此外,创建此公式(尽管它非常基本)时,您将遵循什么样的范例?您可以使用日期类来表示您的时间,然后计算差异,然后用您选择的时间单位来表示

我在小时和分钟内有两次

time[0]: hour1
time[1]: minutes1
time[2]: hour2
time[3]: minutes2
我创建了这个公式来计算时间差(以分钟为单位):

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

我想知道是否有任何边缘的情况下,这一点。此外,创建此公式(尽管它非常基本)时,您将遵循什么样的范例?

您可以使用
日期
类来表示您的时间,然后计算差异,然后用您选择的时间单位来表示

使用此方法,您将避免许多棘手的情况(两天内两次的差异、时间变化等)

我建议您阅读这篇文章和这篇文章,但关于StackOverflow,同样的问题有很多答案;)


注意:在使用
Date
之前,请看一下这篇优秀的文章:

您的代码假设一天是24小时。并非所有的日子都是24小时。夏时制(DST)等异常情况的平均天数长度各不相同

此外,我们已经为此构建了一些类。不需要自己动手。
LocalTime
类表示一天中没有日期和时区的时间。表示未附加到时间线的时间跨度

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
类在一天中的时间中包含日期和时区

你的算法不正确。如果
hour1
是9,
hour2
是23,你会得到什么(假设
minutes1
minutes2
为零)?