2013-07-02 23 views
0

我正在嘗試http://www.epochconverter.com/,我可以做100年,但是當我進入99年時,它似乎分解並報告1999而不是0099.這是一個錯誤嗎?時代應該能代表多遠。曆元時間可以回溯多久?

我也嘗試插入MIN_LONG + 1到joda時間,它報告-292275055-05-16T16:47:04.192Z基本上年-292275055這聽起來比1999年更正確一些,epochconverter.com甚至不能解析分鐘。

允許的歷元時間的最小值是多少?我可以使用分鐘嗎?

感謝, 院長

回答

3

理論上沒有限制。 「紀元時間」僅僅是指定時間點之前/之後的秒數(1970年1月1日,格林威治標準時間午夜)。使用足夠寬的數字類型,您可以用這些術語來描述任何時間。

在實踐中,這樣的時間值變得毫無意義超出一定限度:

  • 有符號的32位整數具有約-2十億的最小值,對應於一個日期晚1901

  • 如果您對日期使用浮點類型,它將失去超出某個點的分辨率。不要爲時間值使用單精度(32位)浮點數;他們的分辨率約爲當前日期的兩分鐘(128秒)!儘管如此,在可預見的未來,64位浮點數仍然可以,因爲它們可以精確地表示所有32位整數。

  • 時區在1900年左右還沒有標準化,所以試圖在此之前表示一段時間是不準確的。

  • 公曆並沒有在1582年之前定義過(直到20世紀20年代才被普遍使用!),所以試圖在日期上使用標準的日期轉換例程,這些日期會帶來不正確的結果。

  • 同樣,Anno Domini(「AD」)日曆直到公元525年才被定義。此外,請注意,沒有年份0.

  • 某些圖書館可能有其他任意限制或限制。例如,您在這裏遇到的一個問題是,Javascript日期庫假定在1900年到1999年之間,年數少於100的是年份的簡寫。

0

1970年1月1日在Unix類系統。

2

通過「時代」,我猜你的意思是維基百科稱之爲「Unix time」,自1970-01-01 00:00:00 UTC以來的秒數。使用32位有符號整數,它可以表示從1901-12-13到2038-01-19(GMT)的日期(正如您可以通過在epochconverter中輸入-2^31和2^31-1的值您鏈接的網站)。 Unix時間本身沒有最小或最大日期或精度,唯一的限制是用什麼樣的數字來定義它。

Joda-Time顯然有時間定義爲自紀元以來的毫秒數,使用long(64位有符號整數)來存儲它。這有一個從-292275055(或292,275,055公元前,如果你喜歡)到+292278994(公元292,278,994)的範圍。

0

1月1日,1970年如果你大紀元時間在64位系統之前去的話,你會得到一個下溢,這將創造一個5倍的時間比宇宙的預計時間。這是什麼導致iPhone 5S的錯誤53 +

0

它將輸入年份99解釋爲1999年的原因是因爲它更可能使用JavaScript函數Date.parse()來解析您的日期,特別異常。

您可以在另一個在線時間戳分析器(例如http://www.convertunixdate.com/)中獲得正確解析的時間戳 - 您可能需要輸入年份作爲4位數字以確保其未被更改。