2012-06-12 61 views
0

我需要在Java中獲得真實世界的日期和時間。我用:java.util.Date是否表示日期是否爲系統日期?

Date date = new Date(); 

但我不確定它不只是系統時間。我不需要依賴PC的本地日期和時間。

如果是這樣,那麼有沒有什麼辦法從它抽象出來?我的意思是我需要正確的時間和日期。如果今天是2012年5月1日,並且用戶在2000年12月1日之前發生了變化(可能有系統錯誤),它不應該影響業務邏輯。那麼有沒有其他辦法可以實現這一目標?

+0

請參見下面的相同的SO問題: http://stackoverflow.com/questions/308683/how-can-i-get-the-current-date-and-time-in -utc-or-gmt-in-java –

+0

我不確定這是否真的是重複的(至少不是指定的問題之一)。我理解這個問題的方式是,如果系統時鐘被設置爲錯誤的日期,那麼目標是獲得「真實世界的日期」。在這種情況下,答案將是查詢時間服務器。請參閱例如:http://stackoverflow.com/questions/925191/java-ntp-client – martin

+0

@martin是的,你是對的 – Dragon

回答

5

Date只有表示自1970年1月1日UTC(模閏秒)的Unix紀元的時間瞬間,以毫秒爲單位。它的數據中沒有時區的概念。但是,如果使用toString方法,它將始終使用系統時區將UTC即時轉換爲本地日期/時間。這讓很多用戶感到困惑,使他們認爲Date包含一個時區 - 這只是一個幻覺。

同樣Date沒有任何日曆系統(格里高利,朱利安等)或「格式」的概念。基本上,它只是一個long :)

+0

其實,它自從大約24秒以後,因爲Unix時間忽略了閏秒。但是對於目前的UTC來說是正確的,如果你想要歷史性的UTC,它就會出錯。 – Julian

+0

喬恩,這是否與你之前的報價略有矛盾,「java.util.Date總是以UTC」發佈在這個[答](http://stackoverflow.com/questions/308683/how-can-i-get-該電流,日期和時間在-UTC-或-GMT-中的Java/308689#308689)? – adarshr

+0

@adarshr:不是。它的UTC與其他任何東西一樣多,因爲它是以UTC來定義的。 –