[英]Get time difference java.sql.Time
我試圖像這樣獲取兩個時間變量之間的時差
long timeDiffLong = hFim.getTime() - hInic.getTime();
Time timeDiff = new Time(timeDiffLong);
輸出正在這樣的事情
hFim = 17:30:00
hInic = 17:00:00
timeDiff = 20:30:00
而不是只顯示00:30:00我總是得到20小時加上結果
通過做這個
Time timeDiff = new Time(timeDiffLong);
您創建了一個新的時間對象, timeDiffLong
是自1970-01-01 00:00 UTC以來的毫秒數。 由於時差為30分鍾,因此Time
對象將參考1970-01-01 00:30 UTC。 但是這里有個問題: timeDiff.toString()
將輸出默認時區中的時間,即,在大多數情況下,您當前所在的時區。
長話短說:不要將間隔(持續時間,時差)強加到Time
對象中。 按照Kushan的建議,要么使用Duration
類(Joda有一個),要么自己做除法和模運算。
如果您使用Java 8,則可以執行以下操作:
LocalTime from = hFim.toLocalTime();
LocalTime to = hInic.toLocalTime();
Duration d = Duration.between(from, to);
然后,您可以使用d.toMinutes()
查詢小時/分鍾等。
您的問題是,當您使用
Time timeDiff = new Time(timeDiffLong);
並使用System.out.println(timeDiff)
輸出,然后顯示您當地時區的結果 。 您可以在執行以下操作時看到:
System.out.println(new Time(0));
TimeZone.setDefault(TimeZone.getTimeZone("PST"));
System.out.println(new Time(0));
在這里產生以下輸出
00:00:00 //will probably be 20:00:00 for you
16:00:00
簡而言之:您的時差顯示為格林尼治標准時間(GMT)日期,已轉換為您當地的時區,因此這就是幾個小時的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.