2016-03-22 3 views
2

У меня есть два значения:Как показать разницу между двумя датами и временем в php?

$c_time = 2016-03-21 14:56:05 
$e_time = 2016-03-24 14:56:05 

Теперь я хочу, чтобы показать оставшееся время и дни, как это:

3 days 0 hour 0 minute 0 second 

Как я могу это сделать с помощью PHP?

+6

Посмотрите на класс РНР [DateTime] (http://php.net/DateTime). В частности, метод [diff] (http://php.net/manual/en/datetime.diff.php). –

+0

Измените вопрос, не добавляйте код в комментарии. –

ответ

2

Вы можете попробовать это

$c_time = new DateTime('2016-03-21 14:56:05'); 

$e_time = new DateTime('2016-03-24 14:56:05'); 

$date_diff = $c_time->diff($e_time); 

echo "{$date_diff->days} days {$date_diff->h} hour {$date_diff->i} minute {$date_diff->s} second"; 
+0

Спасибо, что это работа! – Joe

0

- первый способ:

$datetime1 = strtotime('May 3, 2012 10:38:22 GMT'); 
$datetime2 = strtotime('06 Apr 2012 07:22:21 GMT'); 
$secs = $datetime2 - $datetime1;// == return sec in difference 
$days = $secs/86400; 

- Другой способ:

$date1= new DateTime("May 3, 2012 10:38:22 GMT"); 
$date2= new DateTime("06 Apr 2012 07:22:21 GMT"); 
echo $date1->diff($date2)->("%d"); 
+0

Было бы полезно использовать даты в вопросе или, по крайней мере, формат даты, используемый в вопросе. – RiggsFolly

+0

Если у ОП есть проблемы, различающиеся между $ datetime1 и $ datetime2 и понимая, что они отражают его собственные 2 даты в качестве примера, я не думаю, что много объяснений помогло бы здесь. Опять же, я искренне верю, что он это понимает. –

+0

Я только пытаюсь помочь вам в будущем дать лучшие ответы. Посмотрите на другой ответ, не сильно отличающийся от вашего, и все же он получает 2 upvotes. – RiggsFolly

0
$c_time = new DateTime('2016-03-21 14:56:05'); 
$e_time = new DateTime('2016-03-24 14:56:05'); 
$interval = $c_time->diff($e_time); 
print $interval->format('%a days %h hour %i minutes %s seconds'); 

print $interval->days; // to obtain the number of days 
print $interval->h; // to obtain the number of hours 
print $interval->i; // to obtain the number of minutes 
print $interval->s; // to obtain the number of seconds 
0

Вы можете использовать date_diff():

$c_time = "2016-03-21 15:56:05"; 
$e_time = "2016-03-24 15:56:05"; 
$start = date_create($c_time); 
$end = date_create($e_time); 
$diff=date_diff($end,$start); 
//print_r($diff); 
echo $diff->d." days, ".$diff->h." hours, ".$diff->m." minutes, ".$diff->s." seconds"; 

Результат:

3 days, 0 hours, 0 minutes, 0 seconds 
Смежные вопросы