как подсчитать количество дней оставшихся до определённой даты? 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 шт):

Автор решения: newman

В общем-то у вас рабочий вариант.

Если у вас по условию дата в формате 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');
→ Ссылка