strtotime конвертирует целые числа в метки времени - PullRequest
1 голос
/ 21 января 2011

Для программы, над которой я работал, я перебираю данные, и мне нужно было знать, была ли определенная часть данных датой или нет.

Для простоты я сделал функцию под названием is_date это выглядело так:

function is_date($date){
    return strtotime($date) !== FALSE;
}

Это сработало, но по какой-то причине вернуло TRUE для целых чисел (которые не являются датами).

Например:

is_date('bob') //FALSE
is_date('01/05/2009') //TRUE
is_date('March 16, 2010') //TRUE
is_date(165000) //TRUE

Почему is_date(165000) возвращает TRUE?Как strtotime преобразовать 165000 в метку времени?

В качестве исправления я изменил свою функцию is_date на эту:

function is_date($date){
    return !is_numeric($date) && strtotime($date) !== FALSE;
}

1 Ответ

2 голосов
/ 21 января 2011

Я на самом деле только что понял это.strtotime как формат может принимать раз без двоеточий .

Следовательно, strtotime(165000) совпадает с strtotime('16:50:00').

http://ideone.com/Z4hwQ

...