我想在当前日期添加一些日期。我使用以下代码。
$arrSearchValues=1000;
$datToDate = date('Y-m-d', strtotime("+$arrSearchValues days"));
一切正常,直到天数超过9070.在这个数字上面,结果日期为“1970-01-01”。有没有办法克服这个问题?请帮我举例
答案 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);
抱歉,我忘了使用时间(),检查更新的代码。