我想添加一些日期到當前日期。我使用下面的代碼。將當天日期添加到當前日期
$arrSearchValues=1000;
$datToDate = date('Y-m-d', strtotime("+$arrSearchValues days"));
一切工作完美,直到天數超過9070.Above這個數字得到結果日期「1970-01-01」「。有什麼辦法來解決這個問題,請幫助我例如
我想添加一些日期到當前日期。我使用下面的代碼。將當天日期添加到當前日期
$arrSearchValues=1000;
$datToDate = date('Y-m-d', strtotime("+$arrSearchValues days"));
一切工作完美,直到天數超過9070.Above這個數字得到結果日期「1970-01-01」「。有什麼辦法來解決這個問題,請幫助我例如
2038 1月19日是一個特殊的日子:在這一天,32位的日期/時間實現基於Unix timerun out of bits代表日期和時間,這這就是爲什麼添加溢出並且結果重置爲Unix epo的開始ch(1970年1月1日)。
要繞開這個限制,切換到使用DateTime
,朋友們:
$d = new DateTime();
$d->modify("+10000 days");
echo $d->format("Y-m-d");
試試這個,它應該是最快的方法:
$arrSearchValues=time()+1000*24*60*60;
$datToDate = date('Y-m-d', $arrSearchValues);
對不起,我忘了使用的時間(),檢查更新的代碼。
作爲每http://php.net/manual/en/function.strtotime.php
時間戳的有效範圍通常爲星期五,1901年12月13日20時45分54秒到UTC星期二,2038年1月19日3點14分07秒UTC。 (這些是與32位有符號整數的最小值和最大值對應的日期。)
9070天后,您的時間戳超出範圍,因此您沒有得到有效的時間戳,從而導致錯誤
您可以顯示錯誤,如果沒有有效的時間戳
$arrSearchValues = 1000;
if(strtotime("+$arrSearchValues days"))
{
$datToDate = date('Y-m-d', strtotime("+$arrSearchValues days"));
}
else
{
echo "Out of range";
}
不要你的意思是2038? – 2013-03-20 08:59:23
@GarethCornish:我的確,謝謝。 :) – Jon 2013-03-20 08:59:41
@Jon使用DateTime是正確的,但它不會修改時間戳..我的意思是答案將是錯誤的..它不是很好,而不是顯示錯誤? – alwaysLearn 2013-03-20 09:08:28