我在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日
感谢您的帮助
答案 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
31-01-2016
,则下一个日期为29-02-2016
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;
答案 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 ......