日期错误解决方案

时间:2011-03-23 11:37:49

标签: php mysql

这是我的计划:

$newEndingDate = strtotime(date("Y-m-d", strtotime($row['startdate']))."+1 year");
echo $newEndingDate;

这是我的错误

1332441000

是什么错误

4 个答案:

答案 0 :(得分:3)

strtotime()函数返回UNIX Timestamp:自1970-01-01以来的秒数。

您获得的数字不是错误:它只是意味着自1970年以来已经过了1332441000秒。


如有必要,您可以使用date()函数格式化该时间戳,以获得看起来更加用户友好的字符串。

例如:

echo date('Y-m-d H:i:s', $newEndingDate);

应该会得到以下结果:

2012-03-22 19:30:00

答案 1 :(得分:2)

尝试使用mktime做你想做的事。假设$row['startdate'] == '2011-01-01'

$mydate = strtotime($row['startdate']);
$newEndingDate = mktime(date("H", $mydate), date("i", $mydate), date("s", $mydate), date("n", $mydate), date("j", $mydate), date("Y", $mydate) + 1);
echo date('Y-m-d', $newEndingDate); //2012-01-01

您正在做的事情不会给您带来的结果,因为您无法执行以下操作:

strotime('2011-01-01+1 year');

请改为尝试:

$mydate = strtotime($row['startdate']);
$newEndingDate = date('Y-m-d', strtotime("+1 year", $mydate));
echo $newEndingDate; //2012-01-01

答案 2 :(得分:0)

它是strtotime函数的返回值,它是一个UNIX时间戳。从1970年1月1日开始的秒数

我认为这是你想要的:

$newEndingDate = date('Y-m-d', strtotime('+ 1 year', strtotime($row['startdate'])));

答案 3 :(得分:0)

你没有收到错误,你得到自1970/01/01以来所有秒数的时间戳

如果您需要可读格式,请尝试:

$date = date("Y-m-d H:i:s", $newEndingDate);