Предотвратить установку даты PHP() от дефолта до 12/31/1969

Я использую базу данных MySQL с PHP. Я сохраняю свои значения даты в базе данных с помощью поля DATETIME.

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

date("Y-m-d H:i:s", strtotime($inputDate))

Однако, всякий раз, когда дата недействительна, она помещается в базу данных как 1969-12-31 19:00:00

Есть ли способ по умолчанию для 0000-00-00 00:00:00?

Ответ 1

Просто определите достоверность вывода strtotime(), который возвращает false при ошибке.

Что-то вроде:

$time = strtotime($inputDate);
$date = ($time === false) ? '0000-00-00 00:00:00' : date('Y-m-d H:i:s', $time);

Ответ 2

strtotime возвращает false, значение даты равно 0. Прежде чем вы должны проверить, что strtotime не возвращает false, чтобы это:

$ts = strtotime($inputDate);

if ($ts === false)
{
//invalid date
}
else
{
echo date("Y-m-d H:i:s", $ts);
}