Получить время между двумя датами в месяцах только в PHP? - PullRequest
0 голосов
/ 18 октября 2018

Я написал этот сценарий, чтобы указать время между двумя датами

$term_start   = date_create("2018-01-01");
$now          = date_create(date("2019-02-01"));
$diff         = date_diff($term_start,$now);
$amount_spent = $diff->format("%y %m");
echo $amount_spent;

Но я хочу, чтобы оно было только в месяцах, как заставить его вывести 25 вместо 1 1?

Ответы [ 3 ]

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

попробуйте этот код:

$term_start = "2017-01-01";
$now        = "2019-02-01";
$ts1        = strtotime($term_start);
$ts2        = strtotime($now);
$year1      = date('Y', $ts1);
$year2      = date('Y', $ts2);
$month1     = date('m', $ts1);
$month2     = date('m', $ts2);
$diff       = (($year2 - $year1) * 12) + ($month2 - $month1);
echo $diff;

Вывод: 25

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

Простое решение состоит в том, чтобы вычислить количество секунд, в котором разница, и разделить на количество секунд в месяце (в среднем 30 дней).

$term_start   = "2017-01-01";
$now          = "2019-02-01";
echo floor((strtotime($now) - strtotime($term_start))/2592000);
// 25

Это означает, что вам не нужноиспользовать DateTime, который является довольно тяжелым.

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

Если целью является получение разницы в месяцах между двумя датами, вы можете попробовать следующее:

<?php
$term_start   = date_create("2017-01-01");
$now          = date_create(date("2019-02-01"));
$diff         = date_diff($term_start,$now);
$amount_spent = $diff->format("%y")*12 + $diff->format("%m");
echo $amount_spent;
?>

Вывод:

25

...