我有几小时和几分钟的时间。
time[0]: hour1
time[1]: minutes1
time[2]: hour2
time[3]: minutes2
我已经创建了这个公式来计算时间差(以分钟为单位):
((time[2] % 12 - time[0] % 12) * 60) + (time[3] - time[1])
我想知道是否有任何边缘案例。另外,创建这个公式时你会遵循什么范式(尽管它是非常基本的)?
答案 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
课程以包含日期和时区以及您的时间。