Допустима ли строка для использования с strtotime ()? - PullRequest
5 голосов
/ 11 февраля 2011

PHP имеет strtotime(), который предполагает, что введенный ввод является строкой, представляющей допустимое время.Прежде чем использовать strtotime(), как я могу убедиться, что строка, которая должна быть ему передана, имеет один из допустимых форматов?

Ответы [ 2 ]

10 голосов
/ 11 февраля 2011

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-битные временные метки охватывают практически бесконечный период времени.

2 голосов
/ 11 февраля 2011

На самом деле вы не можете проверить это перед выполнением функции, но вы можете взглянуть на официальную страницу php.net.Единственное, что вы можете сделать, это проверить, возвращает ли ваша функция «false».

Вот ссылка strtotime ()

Существует множество примеров того, что вы можете сделать с помощью strtotime ().

...