簡體   English   中英

獲取時差java.sql.Time

[英]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()查詢小時/分鍾等。

看起來像一個重復的問題,您已經看到這個答案了嗎?

如何以分鍾為單位查找兩個Joda-Time DateTime之間的差異

您應該看一下Joda時間:

http://www.joda.org/joda-time/

您的問題是,當您使用

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM