2011-06-29 32 views
-1

我將時間戳轉換爲日期。當我將2242425600轉換成日期時,它將倒轉日期爲過去。我的代碼是在php中的日期隱藏時間戳

echo date("m/d/Y",'2242425600'); 

這是給我'12/16/1904'這是一個錯誤的日期。我已在http://www.onlineconversion.com/unix_time.htm中查看此時間戳。它給出正確的日期。

我不明白爲什麼日期函數是在我的代碼給錯誤的日期。

+0

LOL!這個數字進入了Unix [2038問題](http://en.wikipedia.org/wiki/Year_2038_problem)。太棒了! (你可以用DateTime來解決這個問題,但是哇...記得Y2K嗎?) – cwallenpoole

回答

0

您需要使用日期/時間對象的日期是比21世紀30年代

http://php.net/manual/en/book.datetime.php

http://www.php.net/manual/en/datetime.construct.php

大從手動

$date = new DateTime('@2242425600'); 
echo $date->format("m/d/Y") . "\n"; 
+0

它在我的例子中有效嗎? – genesis

+0

@genesis您正在運行5.3(日期時間對象可用)。當我在5.2上運行時,我得到'12/16/1904'' – JohnP

+0

噢,好。有沒有理由爲什麼它不適用於5.2? – genesis

2

這是因爲PHP的date功能不能處理日期2038以上,你正在嘗試的2041

時間戳的時間戳的有效範圍是 一般從星期五,1901年12月13日20:45 :54 GMT至星期二,2038年1月19日 03:14:07 GMT。 (這些是日期 ,對應於32位帶符號整數的最小值和最大值 )。但是,在PHP 5.1.0 之前,在一些系統上(例如,Windows的 ),該範圍從01-01-1970 到19-01-2038被限制。

您必須改用DateTime類。

+0

它是怎麼可能在我的例子@Shakti Singh中起作用? – genesis

+0

今晚我們要舉辦派對,就像是2037! – cwallenpoole