2017-04-23 176 views
-2

我有兩次以小時和分鐘爲單位。用於計算時間差的公式

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

我創造了這個公式來計算以分鐘爲單位的時間差:

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

如果有任何優勢的情況下,以這個我不知道。另外,創建這個公式的過程是什麼樣的(儘管它非常基本)?

+0

您的算法不正確。如果'hour1'爲9,'hour2'爲23(假設'minutes1'和'minutes2'爲零),你會得到什麼? –

回答

0

您可以使用Date類來表示您的時間,然後計算差異,然後以您選擇的時間單位表示。

使用此方法,您將避免很多棘手的情況(兩天不同時間之間的差異,時間更改等)。

我建議你這個post的讀取,並且這post但也有許多答案在計算器上此完全相同的問題;)

注:使用Date之前,看看這個優秀的帖子:What's wrong with Java Date & Time API?

0

您的代碼假定天數爲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類來包含日期和時區以及您的時間。