当前日期+ 2个月

时间:2012-05-14 15:43:44

标签: php date strtotime

我写了这段代码是为了显示当前日期+ 2个月:

<?php
    $date = date("d/m/Y");
    $date = strtotime(date("d/m/Y", strtotime($date)) . "+2 months");
    $date = date("d/m/Y",$date);
    echo $date;
?>

它似乎无法正常显示:01/03/1970。

我做错了什么?

感谢您的帮助。

编辑:

在阅读了评论和答案之后,我对其进行了简化和纠正。

<?php
    $date = date("d/m/Y", strtotime(" +2 months"));
    echo $date;
?>

4 个答案:

答案 0 :(得分:26)

你错过了第二个strtotime()电话的第二个参数:

echo date('d/m/Y', strtotime('+2 months'));

答案 1 :(得分:9)

尝试使用DateTime object

$date = new DateTime("+2 months");
echo $date->format("d/m/Y");

答案 2 :(得分:3)

如果今天是“YYYY-mm-31”而下个月没有第31天, 它将显示当天的下个月,使系统显示“+3个月”结果而不是“+2个月”结果。

所以我猜这是最安全的:

$end_date=date("Y-m-d",strtotime("+2 month",strtotime(date("Y-m-01",strtotime("now") ) )));

将日期更改为第一天。

答案 3 :(得分:1)

使用 DateTime->add() DateTime->modify()

如果您正在使用现有的DateTime对象,则可以使用以下方法之一:

// Your date
$date = new DateTime(); // empty for now or pass any date string as param

// Adding
$date->add(new DateInterval('P2M')); // where P2M means "plus 2 months"

// or even easier
$date->modify('+2 months');

// Checking
echo $date->format('Y-m-d');

谨防在PHP中添加月份,如果原始日期中的日期高于新月份的总天数,则可能会溢出到下个月。添加年份时,闰年会发生相同的溢出。不知何故,这不被PHP开发人员视为错误,只是在没有解决方案的情况下进行了记录。更多信息: PHP DateTime::modify adding and subtracting months

我发现这是解决溢出问题的最重要的解决方案:

$day = $date->format('j');
$date->modify('first day of +2 months')->modify('+'. (min($day, $date->format('t')) - 1) .' days');