将一天添加到日期的代码返回日期之前的日期: 2009-09-30 20:24:00日期后增加一天应滚动到下个月:1970-01-01 17:33:29

<?php

    //add day to date test for month roll over

    $stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00"));

    echo 'date before day adding: '.$stop_date; 

    $stop_date = date('Y-m-d H:i:s', strtotime('+1 day', $stop_date));

    echo ' date after adding one day. SHOULD be rolled over to the next month: '.$stop_date;
?>

我之前用过类似的代码,这里我做错了什么?


当前回答

我总是加86400秒(一天):

$stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00") + 86400);

echo 'date after adding 1 day: '.$stop_date; 

这可能不是你能做到的最巧妙的方法,但它是有效的!

其他回答

这招对我很管用: 当前日期

$date = date('Y-m-d', strtotime("+1 day"));

anydate:

date('Y-m-d', strtotime("+1 day", strtotime($date)));
<?php

function plusTimetoOldtime($Old_Time,$getFormat,$Plus_Time) {
    return date($getFormat,strtotime(date($getFormat,$Old_Time).$Plus_Time));
}

$Old_Time = strtotime("now");
$Plus_Time = '+1 day';
$getFormat = 'Y-m-d H:i:s';

echo plusTimetoOldtime($Old_Time,$getFormat,$Plus_Time);

?>

你可以使用DateTime()和DateInterval()在今天的日期上添加一天,如下所示:

echo (new DateTime())->add(new DateInterval('P1D'))->format('Y-m-d');

或特定的日期:

$date = '2009-09-30 20:24:00';
echo (new DateTime($date))->add(new DateInterval('P1D'))->format('Y-m-d');

我总是加86400秒(一天):

$stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00") + 86400);

echo 'date after adding 1 day: '.$stop_date; 

这可能不是你能做到的最巧妙的方法,但它是有效的!

下面的代码使用DateTime类及其方法modify()和format()获得当年1月的第一天(但可以是另一个日期),并在这一天上添加365天(但可以是N天):

echo (new DateTime((new DateTime())->modify('first day of January this year')->format('Y-m-d')))->modify('+365 days')->format('Y-m-d');