Добавление месяца к дате возвращает неправильный день - PullRequest
0 голосов
/ 28 октября 2018

Я хочу добавить месяц к текущей дате. Я нашел код здесь на stackoverflow, и он работает - но он возвращает неправильный день. Удаляет день с текущей даты.

Код:

    function add_months($months, DateTime $dateObject) 
        {
            $next = new DateTime($dateObject->format('Y-m-d H:i:s'));
            $next->modify('last day of +'.$months.' month');
            if($dateObject->format('d') > $next->format('d')) {
                return $dateObject->diff($next);
            } else {
                return new DateInterval('P'.$months.'M');
            }
        }

    function endCycle($d1, $months)
        {
            $date = new DateTime($d1);
            $newDate = $date->add(add_months($months, $date));
            $newDate->sub(new DateInterval('P1D')); 
            $dateReturned = $newDate->format('Y-m-d H:i:s'); 
            return $dateReturned;
        }

$today = date("Y-m-d H:i:s");
$ymd = DateTime::createFromFormat('Y-m-d H:i:s', $today)->format('Y-m-d H:i:s');
echo(endCycle($ymd, 1)); //returns wrong day

Итак, когда я покупаю месяц, я получаю 29 дней. Когда я покупаю снова, я получаю -2 дня, потому что он удаляет день из существующей даты истечения срока действия в базе данных. Что не так с расчетом даты? ..

Спасибо :) С наилучшими пожеланиями

1 Ответ

0 голосов
/ 28 октября 2018

Пожалуйста, не переусердствуйте с простым заданием.

http://php.net/manual/en/datetime.modify.php

<?php
  $date = new DateTime('2006-12-12');
  $date->modify('+1 month');
  echo $date->format('Y-m-d');
?>

Это все, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...