我有兩次以小時和分鐘爲單位。用於計算時間差的公式
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])
如果有任何優勢的情況下,以這個我不知道。另外,創建這個公式的過程是什麼樣的(儘管它非常基本)?
您可以使用Date
類來表示您的時間,然後計算差異,然後以您選擇的時間單位表示。
使用此方法,您將避免很多棘手的情況(兩天不同時間之間的差異,時間更改等)。
我建議你這個post的讀取,並且這post但也有許多答案在計算器上此完全相同的問題;)
注:使用Date
之前,看看這個優秀的帖子:What's wrong with Java Date & Time API?
您的代碼假定天數爲24小時。並非所有的日子都是24小時。例如夏令時(DST)的異常日均長度不同。
此外,我們已經爲此建立了類。無需推出自己的。 LocalTime
課程表示沒有日期且沒有時區的時間。 A 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
類來包含日期和時區以及您的時間。
您的算法不正確。如果'hour1'爲9,'hour2'爲23(假設'minutes1'和'minutes2'爲零),你會得到什麼? –