как подсчитать количество дней оставшихся до определённой даты? PHP
Получилось такое решение, но по условию мне необходимо вводить дату в формате ’DD-MM-YYYY’. Но если я меняю формат даты, то способ уже не работает.
function days($date){
$now = strtotime(date('Y-m-d'));
$your_date = strtotime($date);
$countdown = ($your_date - $now)/ (60 * 60 * 24);
return $countdown;
}
echo days("2022-12-05");
Ответы (2 шт):
В общем-то у вас рабочий вариант.
Если у вас по условию дата в формате DD-MM-YYYY то надо сначала перевести ее в формат YYYY-MM-DD и дальше уже по тому варианту, который у вас. Есть.
Один из вариантов может быть
$temp = explode("-", $date);
$date = $temp[2] . "-" . $temp[1] . "-" . temp[0];
Ну или любой другой вариант где вы конвертируете строку с датой.
Как вариант можно посмотреть на класс DateTime и метод DateTime::createFromFormat, который позволяет обрабатывать строку с датой по шаблону.
В php уже довольно давно появилось несколько специальных классов и интерфейсов для работы с датами. Их функциональность богаче чем у старых добрых strtotime и date. Например есть метод createFromFormat, который позволяет парсить даты в разных нестандартных форматах.
Если изучите этот функционал, то сможете написать что-то вроде:
echo DateTime::createFromFormat('d-m-Y', '05-12-2022')
->diff(new DateTime('now'))
->format('%a');