2017-04-20 51 views
0

問題很簡單,這是一個錯誤還是我在這裏丟失了一些東西,事實是,一個更大的值爲getdate返回一個更早的日期。那裏有什麼問題?爲什麼getdate(1500000000)返回2017年7月7日,而getdate(2500000000)返回2月13日1913

+2

你懂二進制數,32位整數等什麼? – John3136

+1

你的代碼在哪裏? –

+0

一點都沒有,我在問,因爲我不知道爲什麼會發生這種情況,恐怕我的項目可能會陷入困境,因爲我使用了unix時間戳 – Marange

回答

0

2,500,000,000超過32位整數的最大值。

我沒有提前知道答案。這些都是我以前摸不着頭腦的資源: http://php.net/manual/en/language.types.integer.php
INT max size for 32bit system

+0

是!我在閱讀[John3136](http://stackoverflow.com/a/43531455/1370831)的回答後瞭解到,然後編輯我的信息以消除不準確性。你很快雖然;) – heylookltsme

+0

好吧,那麼我應該如何處理它,我的項目最終會崩潰? – Marange

+0

@Marange - 切換到64位PHP,或使用DateTime對象而不是unix時間戳 –

2

25億= 0x9502F900 = 1001 0101 0000 0010 1111 1001 0000 0000

即在32位的系統,符號位被置位,所以你實際上得到負數。自從宇宙於1970年開始(根據unix),1913年的一個日期顯然是一個負面時間戳的症狀。

相關問題