сравнить даты не работает - PullRequest
       17

сравнить даты не работает

4 голосов
/ 27 сентября 2010

Алло,

Я сравниваю 2 даты. Ясно, что $ db_minus7 больше, поэтому значение $ can_invoiced должно быть «возможно», но это «Да». Когда я выполню.

<?php

$db_minus7 = '2010-07-05 09:45:29.420';
$completion_date = '30.07.2009';
if(date("m-d-Y",strtotime($db_minus7)) > date("m-d-Y",strtotime($completion_date))) {
    $can_invoiced = 'maybe';
} else {
    $can_invoiced = 'Yes';
}

echo $can_invoiced;

?>

пожалуйста, помогите

Ответы [ 4 ]

5 голосов
/ 27 сентября 2010

почему бы вам просто не сравнить время их повторного форматирования, например, так:

if(strtotime($db_minus7) > strtotime($completion_date)) {
    $can_invoiced = 'maybe';
} else {
    $can_invoiced = 'Yes';
}

РЕДАКТИРОВАТЬ:

, если вы хотите использовать дату), используйте "Ymd" или "Y-m-d" в качестве шаблона, потому что это сравнение строк, и это логический порядок для работы (упорядочивайте шаблоны от «больших» (лет) до маленьких (дней ... или, может быть, секунд, еслитебе нужно));

2 голосов
/ 27 сентября 2010

Не используйте "m-d-Y", но "Y-m-d".

01-01-2010 ниже 02-01-2009 ( плохо! ), но 2010-01-01 не ниже 2009-01-02( хорошо! ).

1 голос
/ 27 сентября 2010

Сравните даты как даты, а не как строки:

if(strtotime($db_minus7) > strtotime($completion_date)) { 

Если вам нужно сравнить даты как строки, используйте Ymd, а не mdy

0 голосов
/ 27 сентября 2010

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

if(strtotime($db_minus7) > strtotime($completion_date)) {
    $can_invoiced = 'maybe';
} else {
    $can_invoiced = 'Yes';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...