2015-09-04 74 views
0

我是PHP新手,從我正在閱讀的書中,我意識到存在一個2038年問題,它指出,當我使用時間戳時,我可以達到的最遠日期將是2038年1月19日。爲了克服這個約束,我建議使用dateTime對象。然而,當我在PHP中測試它時(使用MAMP和PHP 5.6.6),似乎即使我在更大的日期使用時間戳,它也可以很好地工作。PHP 2038年不是一個錯誤?

例如,請注意下面的代碼:

<?php 
     $date1_timestamp = mktime(13, 30, 0, 1, 12, 2049); 
     $date1 = date('Y-m-d H:i:s', $date1_timestamp); 
     echo $date1; // output: 2049-01-12 13:30:00 
    ?> 

我要問,爲什麼我的PHP服務器沒有從2038年問題的困擾?爲什麼它可以輸出正確的值?時間戳不能擁有如此大的價值,對吧?

+1

[PHP&mySQL:2038年可能的重複錯誤:它是什麼?如何解決它?](http://stackoverflow.com/questions/2012589/php-mysql-year-2038-bug-what-is-it-how-to-solve-it) – sepehr

回答

2

這只是32位版本的PHP的一個問題,您可能運行的是64位版本,它能夠處理更多的毫秒數,因此表示未來的值比2038年的時間戳更長。

+0

謝謝...我有在32位WAMP服務器上試用過,我發現問題所在。只需添加一點,當時間戳超過時,例如設置日期('Y-m-d H:i:s',$ date1_timestamp),無論我在mktime中選擇了什麼值,它始終返回1970-01-01 01:00:00。 – CHANist