ошибка, использовав diff в датах с php?

В настоящее время я использую команду diff в php, чтобы доставать различие двух месяцев, но это различие выходит, но ошибочная не правильная:

Датируй сегодня: 8-03-18 будущая дата: 07-05-18

Это результат, который выходит у меня:

introducir la descripción de la imagen aquí

Квадрат enmedio - тот, кто предполагается, притворяется как счетчик в обмане между обеими датами, но вместо того, чтобы говорить 10 месяцев, он был бы должен говорить в 1 месяце и в месяце 29-ых чисел в дни.

Код

diff($d1);


echo '
'.$interval->format('%y years %m months %d days').'
'; ?>

0
задан 08.03.2018, 19:52
2 ответа

ВЎHola! Возможно имейте общее с форматом, в котором они идут даты в момент instanciarlas как объекты DateTime. Моя подсказка состоит в том, чтобы ты использовал формат clГЎsico aГ±o-mes-dГ-a, sГіlo, чтобы пытаться.

$hoy = date('Y-m-d');
$despues='2018-05-07';
$horafutura='00:00';

(Если ты уменьшаешь даты, как у тебя есть они сейчас, понимая, что PHP думает, что первая стоимость - aГ±o; второй, месяц; и третий, dГ - в, возможно, что sГ - они дают тебе 10 месяцев...).

1
ответ дан 24.11.2019, 01:12

Проблема проистекает того, что DateTime не распознает правильно вошедший формат даты.

SoluciГіn:

PodrГ-Схвати использовать DateTime::createFromFormat, чтобы показывать формат, в котором он заканчивает дата и asГ - тем, что может вычислять правильно различие.

Кроме того, ты должен вычислять различие начиная с $d1, иначе результат serГ - в с одним dГ - в mГЎs.

Пример:

$hoy = date('j-m-y');
$despues='07-05-18';
$horafutura='00:00';

$d1 = DateTime::createFromFormat('j-m-y', $hoy);
$d2 = DateTime::createFromFormat('j-m-y', $despues);

$interval = $d1->diff($d2);


echo '<div class="horario">'.$interval->format('%y years %m months %d days').'</div>';
0
ответ дан 24.11.2019, 01:12