strtotime()
возвращает false, если не может понять ваш формат даты, поэтому вы можете проверить его возвращаемое значение.Эта функция не имеет побочных эффектов, поэтому попытка ее вызова не повредит.
// $format = ...
if (($timestamp = strtotime($format)) !== false) {
// Obtained a valid $timestamp; $format is valid
} else {
// $format is invalid
}
Однако имейте в виду, что strtotime()
поддерживает только тот же диапазон временных отметок Unix, что и архитектура сервера.делает.Это означает, что он будет неправильно возвращать false для определенных диапазонов дат.Из руководства :
Примечание :
Допустимый диапазон отметок времени обычно от пт, 13 декабря 1901 г. 20:45: 54 UTC до вторника, 19 января 2038 03:14:07 UTC.(Это даты, которые соответствуют минимальным и максимальным значениям для 32-разрядного целого числа со знаком.) Кроме того, не все платформы поддерживают отрицательные временные метки, поэтому ваш диапазон дат может быть ограничен не ранее эпохи Unix.Это означает, что, например, даты до 1 января 1970 года не будут работать в Windows, некоторых дистрибутивах Linux и некоторых других операционных системах.PHP 5.1.0 и более новые версии преодолевают это ограничение.
Для 64-разрядных версий PHP допустимый диапазон отметки времени фактически бесконечен, поскольку 64 бита могут представлять примерно 293 миллиарда лет в любом направлении.
Поскольку архитектуры серверов могут различаться, вы можете быть ограничены 32-битными временными метками Unix в зависимости от вашего варианта использования, даже если 64-битные временные метки охватывают практически бесконечный период времени.