PHP проблема с date_diff - PullRequest
       16

PHP проблема с date_diff

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

Я пытаюсь выяснить количество месяцев между двумя датами, предположительно, даты между 2018-08-27 и 2018-10-10.То, что я хочу, это функция, основанная на этих датах, чтобы вернуть разницу в 3 месяца, 08,09,10.У меня есть следующая функция, но кажется, что она выводит только 1 месяц:

public function getGraphMonthsCount(){

        $now =  '2018-08-27';
        $then = '2018-10-10';

        $newNow = new DateTime($now);
        $newThen =  new DateTime($then);

        $result = $newNow->diff($newThen)->m;

        return $result;
    }

это возвращает значение 1.

это то, что функция diff выводит без параметра -> m

object(DateInterval)#157 (15) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(1)
  ["d"]=>
  int(13)
  ["h"]=>
  int(0)
  ["i"]=>
  int(0)
  ["s"]=>
  int(0)
  ["weekday"]=>
  int(0)
  ["weekday_behavior"]=>
  int(0)
  ["first_last_day_of"]=>
  int(0)
  ["invert"]=>
  int(0)
  ["days"]=>
  int(44)
  ["special_type"]=>
  int(0)
  ["special_amount"]=>
  int(0)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(0)
}

Я не знаю, почему он дает только 13 'd' и 1 'm', но если вы загляните дальше в obj, вы увидите, что оно имеет правильное количество 'дней'

Есть ли лучший способ сделать это?

1 Ответ

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

То, что я хочу, это функция, основанная на этих датах, чтобы вернуть разницу в 3 месяца

Вы можете попробовать что-то вроде этого:

$newNow = new DateTime($now);
$newNow = $newNow->modify('first day of this month');

$newThen = new DateTime($then);
$newThen = $newThen->modify('first day of next month');

$result = $newNow->diff($newThen)->m;

Результаты теста:

$now =  '2018-08-27';
$then = '2018-10-10';
// 3

$now =  '2018-08-10';
$then = '2018-08-27';
// 1
...