datetime — получить разницу двух дат в удобном для пользователя формате, используя переполнение стека

Поэтому я пытаюсь определить продолжительность времени до Дата Время достигается в удобной для пользователя форме.

Например, скажем, текущая дата и время 2018-09-10 12:00:00 и конечная цель 2019-11-10 12:00:00 Я хочу просто эхо 1 год, или сказать, что это 2018-09-10 13:30:00 эхо 1 час если время меньше минуты, просто скажите 1 минуту.

Я действительно изо всех сил пытаюсь найти любой ресурс, описывающий, как легко сделать это без всякой дрянной фразы if.

1

Решение

использование DateTime класс для преобразования строки даты в объект php. Тогда используйте
DateTime::diff() способ получить разницу двух дат. Также вам нужно проверить значение year, month, day, hour, minute а также second вернуть ожидаемый результат.

$sDate = "2018-09-10 12:00:00";
$eDate = "2019-11-10 12:00:00";

$startDate = new DateTime($sDate);
$diff = $startDate->diff(new DateTime($eDate));

if ($diff->y > 0)
$diffStr = $diff->y." year";
else if ($diff->m > 0)
$diffStr = $diff->m." month";
else if ($diff->d > 0)
$diffStr = $diff->d." day";
else if ($diff->h > 0)
$diffStr = $diff->h." hour";
else if ($diff->i > 0)
$diffStr = $diff->i." minute";
else if ($diff->s > 0)
$diffStr = $diff->i." second";
else
$diffStr = "dates are same";

echo $diffStr;

Проверить результат в демонстрация

3

Другие решения

Я настоятельно рекомендую вам использовать Carbon«s diffForHumans Metod. Просто сделайте свою жизнь проще, используя все операции с датами для Carbon,

0

на самом деле это тихо легко. Если вы используете SQL, вы можете использовать DATEDIFF и отформатировать результат с помощью date_format ().

Если вы просто используете php, вы должны создать новый объект DateTime () из двух дат. Тогда вы сможете вычесть эти две даты, используя DateInterval ().

Например:

$date1 = new DateTime($your1stDate);
$date2 = new DateTime($your2ndDate);
$result = $date1->diff($date2);
echo date_format($result,'Y-m-d h:m.s'); // or something like that
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector