PHP日期strtotime无法正常工作

时间:2012-04-12 18:08:51

标签: php date strtotime

我写了这段代码

echo date("Y-m-d", strtotime($date, strtotime("+ " . $days . " days")));

$date = 2012-04-12
$days = 15

我希望将$days(15天)添加到日期(2012-04-12)我希望得到2012-04-27,此代码会返回2012-04-12,我做错了吗?

6 个答案:

答案 0 :(得分:8)

echo date('Y-m-d', strtotime('+15 days', strtotime('2012-04-12')));

答案 1 :(得分:5)

不要使用strtotime()。这是不可靠的,虽然你并没有真正做任何真正会在臀部咬你的东西。但依赖于strtotime仍然是一件坏事,因为它会让你的生活在某些时候变得悲惨。

改为使用DateTime

$now = DateTime::CreateFromFormat('Y-m-d', '2012-04-12');
$then = $now->add(new DateInterval('P15D'));
$date = $then->format('Y-m-d');

答案 2 :(得分:2)

$date = '2012-04-12';
$days = 15;
echo date('Y-m-d', strtotime("$date +$days days") );

答案 3 :(得分:1)

echo date("Y-m-d", strtotime("+$days days", $date));

答案 4 :(得分:1)

您的语法不正确。将代码全部放在一行上没有必要或甚至没有帮助。在这种情况下,我们发现尝试这样做会导致语法问题。不要害怕一些额外的小变量!

$date = '2012-04-12';
$days = 15;

$ts = strtotime($date);
$new_ts = strtotime('+'.$days.' days', $ts);
$new_date = date('Y-m-d', $new_ts);

清晰,易读,易于调试。如果你喜欢代码高尔夫,你可以把它放在一行,但有一个更清晰的方式来写它:

$new_date = date (
    'Y-m-d',
    strtotime (
        '+'.$days.' days',
        strtotime($date)
    )
);

<强>文档

答案 5 :(得分:0)

为什么不使用DateTime类?

$date = new DateTime();
$date->add(new DateInterval('P15D'));