2015-04-14 2 views
1
$first = date("h:iA", strtotime('20:00')); 
$second = new DateTime('6:00PM'); 

if ($first > $second) { 
    echo 'Correct'; 
} 
else { 
    echo 'Wrong'; 
} 

Это мой текущий код и не соответствует действительности. 8:00 вечера больше, чем 6:00 вечера? Что-то не так с моим кодом?PHP Сравнение времени неверно echo

+3

Вы сравниваете строку с DateTime. – Barmar

+1

'$ second' - объект DateTime! – Rizier123

+0

@Barmar, поэтому мне нужно преобразовать $ second в строку? – FewFlyBy

ответ

0

Да, это так. Как и раньше, Мармар сказал, что вы сравниваете String с объектом DateTime.

Я просто воссоздал свой код, и это является результатом свалка:

string '08:00PM' (length=7) 

object(DateTime)[1] 
    public 'date' => string '2015-04-14 18:00:00' (length=19) 
    public 'timezone_type' => int 3 
    public 'timezone' => string 'Europe/Paris' (length=12) 
+0

Я не делал downvote, но вы должны полностью ответить на вопрос и как сделать это правильно, и, кстати, его ** Barmar **, вы ошибочно написали его имя. – Ghost

+0

Вы хорошо объяснили проблему, но вам тоже нужно ответить на вопрос – Machavity

+0

Спасибо за ваши предложения, ребята! :) –

4

Делают это только strtotime.

$first = strtotime('20:00'); 
$second = strtotime('6:00PM'); 

if ($first > $second) { 
    echo 'Correct'; 
} 
else { 
    echo 'Wrong'; 
} 

Надеюсь, что это решит проблему.

+0

Это хороший и простой подход! :) Отлично. –

-1

Я преобразовал DateTime в String, и он работает.

$first = date("h:iA", strtotime('20:00')); 
$date = new DateTime('6:00PM'); 
$second = $date->format('h:iA'); 
if ($first > $second) { 
    echo 'Correct'; 
} 
else { 
    echo 'Wrong'; 
} 
3

Палка с одного типа USE strtotime или DateTime класса для данных/операций, связанных времени.

$first = strtotime('20:00'); 
$second = strtotime('6:00PM'); 
var_dump($first > $second); 

ИЛИ

$first = new DateTime("20:00"); 
$second = new DateTime("6:00PM"); 
var_dump($first > $second); 
Смежные вопросы