Поэтому я пытаюсь определить продолжительность времени до Дата Время достигается в удобной для пользователя форме.
Например, скажем, текущая дата и время 2018-09-10 12:00:00
и конечная цель 2019-11-10 12:00:00
Я хочу просто эхо 1 год, или сказать, что это 2018-09-10 13:30:00
эхо 1 час если время меньше минуты, просто скажите 1 минуту.
Я действительно изо всех сил пытаюсь найти любой ресурс, описывающий, как легко сделать это без всякой дрянной фразы if.
использование 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;
Проверить результат в демонстрация
Я настоятельно рекомендую вам использовать Carbon
«s diffForHumans
Metod. Просто сделайте свою жизнь проще, используя все операции с датами для Carbon
,
на самом деле это тихо легко. Если вы используете 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