2014-01-08 2 views
0

У меня возникли проблемы с поиском разницы между двумя TimeDates в PHP. Вот что у меня есть.Поиск времени между текущим временем и временем в PHP

$endTime = new DateTime($row['endTime']); // "$row['endTime']" is from a mysql database 
date_default_timezone_set('America/New_York'); 

$now = new DateTime(); 
$interval = $endTime->diff($now); 
echo $interval->format("%h:%i:%s"); 

В качестве примера, если EndTime был «2014-01-08 1:51:40», и текущее время был «2014-01-09 1:54:42», он был отображаться как '24: 03: 02 '. Мне также нужно выяснить, как это сделать:

if($endTime > $now){ 
    //run code 
} 

Любые предложения?

+0

Что не работает. Оба фрагмента выглядят нормально для меня (с первого взгляда). –

+0

конвертировать все к отметке времени и сравнить его – urorbit

+0

Вам не нужно преобразовывать объекты DateTime в метки времени, чтобы их сравнить. Они уже сопоставимы. –

ответ

0

Ваш код работает (хотя я не думаю, что форматирование вашего интервала - это то, что вы, вероятно, ищете). Как вы можете видеть, может сравнить объекты DateTime без необходимости их преобразования в другой формат, например, в метку времени.

$endTime = new DateTime('tomorrow'); 
date_default_timezone_set('America/New_York'); 

$now = new DateTime(); 
if($endTime > $now){ 
    $interval = $endTime->diff($now); 
    echo $interval->format("%h:%i:%s"); 
} 

See it in action

+0

Wow thanks! Это было легче, чем я думал. Однако у меня есть несколько вопросов. Если осталось больше 24 часов, отобразится ли оно как 25 часов или 0 часов? Кроме того, есть ли простой способ показать минуты и секунды как «: 01», а не «: 1»? В очередной раз благодарим за помощь! – user3174765

+0

Все это обрабатывается параметрами форматирования, которые вы передаете 'format()'. Я написал [сообщение в блоге] (http://www.johnconde.net/blog/working-with-dates-and-times-in-php/), которое должно продемонстрировать, как это сделать. –

Смежные вопросы