日期再加上一个月的php

时间:2016-07-22 11:00:51

标签: php date

我在PHP中的日期有一个小问题。

当我在1月31 + 1个月时 使用此代码

$newDate = date('Y-m-d', strtotime('31-01-2016'.' + 1 month'));
echo $newDate;

它给了我3月2日,但我需要在2月29日给我,

我需要加1个月而不是30天。

所有日期同上: 例如 1月1日+ 1个月=> 2月1日

29月1日+ 1个月=> 2月29日

30月1日+ 1个月=> 2月29日

31月1日+ 1个月=> 2月29日

感谢您的帮助

4 个答案:

答案 0 :(得分:5)

我认为你正在寻找这种类型的约会。

<?php
    $date = date('2016-01-31');
    $currentMonth = date("m",strtotime($date));
    $nextMonth = date("m",strtotime($date."+1 month"));
    if($currentMonth==$nextMonth-1){
        $nextDate = date('Y-m-d',strtotime($date." +1 month"));
    }else{
        $nextDate = date('Y-m-d', strtotime("last day of next month",strtotime($date)));
    }
    echo "Next date would be : $nextDate";
?>

查看现场演示:https://eval.in/610034

  1. 如果日期为31-01-2016,则下一个日期为29-02-2016
  2. 如果日期为25-01-2016,则下一个日期为25-02-2016

答案 1 :(得分:2)

只需尝试:

$date = new DateTime('2016-01-31');
$date->modify('last day of next month');

当然,只有当你总是从一只飞蛾的末尾到下一只飞蛾的末尾时才会计算。

答案 2 :(得分:0)

试试这个,

$date = "2016-01-29";
$date = date('Y-m-d', strtotime("last day of next month",strtotime($date)));
echo $date;

https://3v4l.org/Y9PpV

答案 3 :(得分:0)

这样的事情怎么样:

date_default_timezone_set('UTC');

$current_month = (int) date('m');
$year = date('y');
$newDate = date('Y-m-d', strtotime('31-1-2016'.' + 1 month'));

if($current_month == 12) 
{
    $new_month=0;
    $year++;
}

$d = new DateTime( $year.'-'.($current_month+1).'-01' ); 
echo $d->format( 'Y-m-t' )."\n";

根据您的需要更改$ current_month / $ year ......