2016-11-30 132 views
3

java可以在不依賴操作系統時間設置的情況下獲取UTC時間嗎?獲取UTC時間而不依賴操作系統時間

例如在java 8時間api Instant.now()返回UTC的時間。如果我將操作系統中的系統時間更改爲30分鐘,它會給我UTC time + 30 minutes

是否有一個時鐘不依賴於哪種操作系統設置,某種機器時鐘?如果是這樣,如何從java中使用它。

+0

在我腦海中彈出的唯一方法是等待服務器的時間(根據他的操作系統時間設置給出時間戳) – n247s

+0

當在機器上安裝操作系統的時間設置從BIOS中使用時,某些那種機器時鐘? – maks

回答

2

當您得到System.currentTimeMillis()這是GMT + 0的系統/機器時鐘時間。您的機器上沒有更多的真實時間。你可以問一個時間服務器可用的時間,但它會有一些錯誤,並且有很大的延遲,你需要依賴它的準確性。

唯一可用的其他時鐘是System.nanoTime(),它在大多數機器上是機器重置後的納秒數。它不能通過增加或減少30分鐘來改變,但它不是相對於任何標準時間,也不能糾正每天幾十毫秒的漂移。

+0

所以沒有問外部服務是不可能的? – maks

+0

@maks是的。有兩個定時器可用,但都沒有做你想要的。 –

+0

計時器出現在BIOS中或製造商預先安裝的機器上的類似軟件(或在商店中配置)又稱爲「硬件時鐘」?當你安裝一個操作系統時,它會從那裏抽取時間設置,至少我已經在我的機器上觀察過它了:) – maks