我見過很多次,例如在UNIX上,在MySQL timestamp等:紀元開始於1970-1-1,但最高記錄的一年是2038年。現在讓我算:爲什麼我們不使用完整的32位來存儲自Epoch以來的136年?
2^32/60/60/24/365+1970
2106
所以,如果我們使用完整的32位,我們自然會得到到2106年沒有任何問題。但顯然2038年只對應31位。那麼,爲什麼我們拋出一點呢?通過使用完整的32位,我們可以希望我們不必解決問題,因爲我們可能會首先摧毀地球......
對評論的反應:當然這是因爲它已簽名,但爲什麼會有時間戳必須簽字?這是這個問題的關鍵。
-1用來表示錯誤,所以我猜它必須簽名,並允許時間之前,1970年 – dalle
符號位允許負日期,即1970年之前 – 2014-02-10 19:07:53
@MikeW日期不MySQL,至少。你不能在時間戳中表示1970年之前的日期。 – TMS