2014-05-30 2 views
0

Является ли это действительной проверкой равенства даты PHP?Является ли это действительной проверкой равенства даты PHP?

$zeroDate = date("0000-00-00 00:00:00"); 

if(date($someOtherDateString)==$zeroDate) { 
// . . . 
} 
+1

Пробовали ли вы его? Это работает??? Вы знаете, как работает '' date() ') (http://php.net/manual/en/function.date.php)? –

+0

Ребята Я ценю конструктивную интроспекцию и исследования, которые вы мне ободряете, но это простой ответ «да/нет». Предоставьте «нет», почему, и я могу дать вам 10 очков. –

+1

Мое предположение, что ОП действительно попробовал, и, вероятно, он работал очень хорошо в ограниченном количестве тестов, но теперь он просто спрашивает сообщество, если это правильный общий подход. Во всяком случае, я могу изменить вопрос на «это лучший способ проверить точное качество даты», а не просто «действительный», но это разумный запрос. –

ответ

2

Мне было бы более комфортно тестировать истинные значения даты/времени, чем строки, которые просто напоминают дату.

У меня есть два основных подхода для проверки качества даты. Первый из них: равны ли переменные (например, дорожка, над которой вы находитесь, но не строковые тесты). Второй: есть ли ненулевая дельта между датами?

Попробуйте это:

// convert strings to time 
$zeroDate = strtotime("0000-00-00 00:00:00"); 
$someOtherDate = strtotime("0000-00-00T00:00:00-00:00"); 

// sanity check on the data 
var_dump($zeroDate); 
var_dump($someOtherDate); 

// Approach #1 
if ($someOtherDate === $zeroDate) { 
    print "They are equal\n"; 
} else { 
    print "They are not equal\n"; 
} 

// Approach #2 
if (($someOtherDate - $zeroDate) === 0) { 
    print "They are still equal\n"; 
} else { 
    print "There are not equal\n"; 
} 

Надеется, что это помогает!

1

No.Use метки времени Unix вместо того, чтобы получить целое число:

$zeroDate = date('U', "0000-00-00 00:00:00"); 

if(date('U', $someOtherDateString)===$zeroDate) { 
// . . . 
} 
Смежные вопросы