Я использовал класс DateTime в PHP, потому что date () имеет недостатки обратной метки времени Unix. Однако ни один из подходов не обнаруживает недействительные даты для месяцев, у которых нет 31 дня, но при этом используется 31-й день.
Пример кода:
try {
$date = new DateTime('02/31/2018');
$formattedDate = $date->format('Y-m-d');
}
catch (Exception $e) {
}
echo $formattedDate;
Пример вывода:
2018-03-03
Обновление 1:
Чтобы использовать checkdate (), мне нужны составные части даты. Чтобы получить это, мне нужно создать экземпляр объекта DateTime со строкой даты в качестве конструктора. В случае '02/31/2018', он будет преобразован в '03/03/2018' при создании экземпляра. В этот момент будет слишком поздно запускать компонент месяц, день, год через checkdate (). Какое решение?
Обновление 2:
Получение составной части дат легко, если я задаю определенный формат (например, mm / dd / yyyy), но если я принимаю все форматы, принятые strtotime (), я не могу выполнить контрольную дату до запуска ее через strtotime ( ) -> date () или DateTime :: __ construct -> DateTime :: format ().
Я использовал класс DateTime в PHP, потому что date () имеет недостатки обратной метки времени Unix. Однако ни один из подходов не обнаруживает недействительные даты для месяцев, у которых нет 31 дня, но при этом используется 31-й день.
Пример кода:
try {
$date = new DateTime('02/31/2018');
$formattedDate = $date->format('Y-m-d');
}
catch (Exception $e) {
}
echo $formattedDate;
Пример вывода:
2018-03-03
Обновление 1:
Чтобы использовать checkdate (), мне нужны составные части даты. Чтобы получить это, мне нужно создать экземпляр объекта DateTime со строкой даты в качестве конструктора. В случае '02/31/2018', он будет преобразован в '03/03/2018' при создании экземпляра. В этот момент будет слишком поздно запускать компонент месяц, день, год через checkdate (). Какое решение?
Обновление 2:
Получение составной части дат легко, если я форсирую определенный формат (например, mm / dd / yyyy), но если я принимаю все форматы, принятые strtotime (), я не могу выполнить контрольную дату до запуска ее через strtotime ) -> date () или DateTime :: __ construct -> DateTime :: format ().