使用php查找2个月后的日期

时间:2017-09-20 05:22:30

标签: php

当我的当前日期是“2017年12月31日”。我需要找到2个月后的日期,这意味着2月份。当它的二月我需要得到“29/2/2018”。但是当我们使用下面的代码时,我得到了“03/03/2018”。你能帮我解决一下这个任务吗,

这里我添加了我的PHP代码,

$xmasDay = new DateTime('2017-12-31 + 2 month');
echo $xmasDay->format('Y-m-d');

2 个答案:

答案 0 :(得分:0)

请试试这个

 <?php

 function add_month($date_str, $months)
 {
     $date = new DateTime($date_str);

     // We extract the day of the month as $start_day
     $start_day = $date->format('j');

    // We add 1 month to the given date
     $date->modify("+{$months} month");

    // We extract the day of the month again so we can compare
    $end_day = $date->format('j');

   if ($start_day != $end_day)
   {
        // The day of the month isn't the same anymore, so we correct the date
       $date->modify('last day of last month');
   }

   return $date->format('Y-m-d');
}
$result = add_month('2017-12-31', 2);
echo $result

答案 1 :(得分:0)

从该月的第一天开始计算,然后使用日期t

$orginal = '2017-12-31';
$orginal = explode('-', $orginal);

$originalDate = strtotime($orginal[0] . '-' .  $orginal[1] . '-01 00:00:00');
$newDate      = strtotime('+2 month', $originalDate);

echo date('Y-m-t', $newDate);
// or
$date = new DateTime();
$date->setTimestamp($newDate);
echo $date->format('Y-m-t');