添加当前日期的天数

时间:2013-03-20 08:50:20

标签: php

我想在当前日期添加一些日期。我使用以下代码。

$arrSearchValues=1000;

$datToDate = date('Y-m-d', strtotime("+$arrSearchValues days"));

一切正常,直到天数超过9070.在这个数字上面,结果日期为“1970-01-01”。有没有办法克服这个问题?请帮我举例

3 个答案:

答案 0 :(得分:2)

根据http://php.net/manual/en/function.strtotime.php

时间戳的有效范围通常是从星期五,1901年12月13日20:45:54 UTC到星期二,2038年1月19日03:14:07 UTC。 (这些是与32位有符号整数的最小值和最大值相对应的日期。)

9070天后,您的时间戳超出范围,因为您没有获得有效的时间戳,因此错误

如果无效时间戳

,则可以显示错误
$arrSearchValues = 1000;
if(strtotime("+$arrSearchValues days"))
{
   $datToDate = date('Y-m-d', strtotime("+$arrSearchValues days"));
}
else
{
    echo "Out of range";
}

答案 1 :(得分:2)

2038年1月19日是一个特殊的日子:在那一天,基于Unix time run out of bits的32位日期/时间实现来表示日期和时间,这就是添加溢出和结果的原因重置为Unix纪元的开始(1970年1月1日)。

要解决此限制,请切换为使用DateTime和朋友:

$d = new DateTime();
$d->modify("+10000 days");
echo $d->format("Y-m-d");

答案 2 :(得分:0)

试试这个,它应该是最快的方式:

$arrSearchValues=time()+1000*24*60*60;
$datToDate = date('Y-m-d', $arrSearchValues);
抱歉,我忘了使用时间(),检查更新的代码。