爲什麼時間戳((長)-62135596800000L)返回0001-01-03 00:00:00,但必須返回0001-01-01 00:00:00?該服務顯示正確的時間戳here時間戳顯示錯誤的數據
4
A
回答
12
-62135596800000
爲0001-01-03 00:00:00.0因爲by default java uses Julian calendar for dates before October 15, 1582。
您正在使用的網站使用的JavaScript使用所有日期的推斷或格雷戈裏歷日歷。來自javascript specification
ECMAScript使用外推陽曆系統將日數號碼映射到年號碼並確定當年的月份和日期。
事實上,在javascript:
new Date(-62135596800000).toUTCString()
//"Mon, 01 Jan 1 00:00:00 GMT"
您可以使用這樣的事情在Java中獲得相同的結果:
GregorianCalendar date = new GregorianCalendar();
date.clear();
//Use Gregorian calendar for all values
date.setGregorianChange(new Date(Long.MIN_VALUE));
date.setTimeZone(TimeZone.getTimeZone("UTC"));
date.setTime(new Date(-62135596800000L));
System.out.println(
date.get(GregorianCalendar.YEAR) + "-" +
(date.get(GregorianCalendar.MONTH) + 1) + "-" +
date.get(GregorianCalendar.DAY_OF_YEAR) + " " +
date.get(GregorianCalendar.HOUR_OF_DAY) + ":" +
date.get(GregorianCalendar.MINUTE) + ":" +
date.get(GregorianCalendar.SECOND) + "." +
date.get(GregorianCalendar.MILLISECOND)
);
//Prints 1-1-1 0:0:0.0
不幸的是,我不知道如何進行格里高利從Calendar
更改爲Date
對象,所以我直接從日曆對象中進行格式設置。如果我剛剛做了 formatter.format(date.getTime())
它將失去格里高利的變化設置並再次顯示第3天。
Julian日期提前2天,因爲根據this, 從公元前1年到公元100年,朱利安在格列高利時代前2天。
順便說一句,我建議使用JodaTime
,它正確(我看來,though if you need something more convincing)默認爲純陽曆:
DateTime dt = new DateTime(-62135596800000L, DateTimeZone.UTC);
System.out.println(dt.toString());
//0001-01-01T00:00:00.000Z
+0
非常好......讓人難以置信! – ShrekOverflow
相關問題
- 1. Coldfusion時間戳數據類型錯誤
- 2. 從數據庫時間戳顯示時間和日期
- 3. Rails根據時間戳顯示帖子
- 4. unix時間戳轉換顯示錯誤的日期
- 5. Sitecore用戶管理器顯示錯誤的時間戳
- 6. ActiveRecords顯示ISO8601時間戳
- 7. 時間戳錯誤的時間
- 8. 流明時間戳追蹤數據和數據丟失錯誤
- 9. Oracle Streams錯誤日誌未顯示時間戳值
- 10. date()顯示錯誤時間
- 11. 錯誤的時間戳外部表示錯誤在Netezza
- 12. 帶時間戳的數據庫,顯示不同的月份
- 13. MySQL時間戳錯誤
- 14. 錯誤解析時間戳
- 15. Django時間戳錯誤
- 16. Android時間戳錯誤
- 17. 搜索時顯示的數據錯誤
- 18. php date()函數顯示錯誤時間
- 19. 根據天數和月數來顯示時間戳?
- 20. Android Quickblox錯誤時間戳錯誤
- 21. 在Dygraph中顯示具有不同時間戳的數據
- 22. 高圖表不顯示正確的數據時間戳
- 23. 的時間戳數據
- 24. 從firebase數據庫檢索錯誤的時間戳
- 25. 時間戳顯示有時不正確(數據庫自動更改時間)
- 26. 力的Oracle SQL Developer顯示時間戳
- 27. 顯示MySQL的時間戳正確
- 28. 時間UTC戳顯示錯誤日期拋出PHP日期函數
- 29. Highcharts顯示爲錯誤的日期戳
- 30. 將時間戳長轉換爲時間戳錯誤
也許這些網站上的答案是錯的? – assylias
在java中它是-62135773200000L。也許siete的計算在閏年計算上是錯誤的;格利高裏/朱利安日曆。 –