運行下面的代碼:解析日期返回錯誤的時間
String s = "1914-07-20T00:00:00+0200";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
System.out.println(df.parse(s));
我得到這樣的結果:
孫七月 23時34分52秒EET 1914年 (注意日期和小時)
運行下面的代碼:解析日期返回錯誤的時間
String s = "1914-07-20T00:00:00+0200";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
System.out.println(df.parse(s));
我得到這樣的結果:
孫七月 23時34分52秒EET 1914年 (注意日期和小時)
這可能是其中一個時間調整,發生在中午讓太陽升起。這些發生在當時世界變得更小,當地時區被更普遍的時區所取代。 25分鐘可能是這樣的調整。從那時起到現在,您將不得不查看東歐時區調整的記錄。
檢查這個的另一種方法是把它放在一個循環中,看它在1924年和1934年等工作,直到現在。在某種程度上,如果進行了這樣的調整,它可能會開始工作,並且可以將其縮小到某個特定的時間,在該特定的時間下,所有時間都按照預期工作,並且之前的所有時間都不會。雖然,可以肯定的是,可能會有一系列的調整。 10分鐘,7分鐘加起來25分鐘。
注
此頁面(http://www.prokerala.com/travel/timezones/EET?mode=history)顯示GMT爲1.64444於1920年。那是39:52分,秒偏移於1901年和2。
這個頁面(http://home.tiscali.nl/~t876506/TZworld.html)是關於全球tz數據庫,顯示歐洲/雅典1:34:52的LMT(當地平均時間),理論上應該是+2:00。我不太清楚這與它有什麼關係,但是看到OP的確是一個奇怪的巧合。 (我還發現,約達時間在「官方」時區數據文件第一次輸入之前的任何日期都使用LMT偏移量。
我認爲這是正確的。在2012年該年減去7小時,1914年減去8小時 –
它打印'Mon Jul 20 03:53:20 IST 1914'(印度)。 –
'Locale.getDefault()'返回什麼? – sp00m
@ sp00m en_US.I不認爲語言環境是問題,我嘗試了各種不同的格式,並且它們都返回正確的日期,問題似乎與此有關格式 – tibtof