2013-02-12 2 views
3

Когда я пытаюсь отформатировать разницу дат, используя обычные PHP-коды (d, Y, m и т. Д.) Для дат и времени, он просто выводит букву вместо стоимость. Это происходит только тогда, когда я форматирует DateTime :: diff. Он отлично работает с простым объектом DateTime.PHP DateTime :: diff Проблема с DateTime :: format

Это:

$date1 = new DateTime('2000-01-01'); 
$date2= new DateTime('now'); 
$date=$date2->diff($date1); 
echo $date->format('d days ago'); 

выходы "D дней назад".

Я знаю, что если я заменил d на% a, он выведет, сколько дней назад это было. Мне было интересно, какие другие персонажи будут выводить секунды, минуты или даже годы.

Заранее благодарен!

ответ

7

DateTime :: diff() возвращает объект DateInterval.

Например:

<?php 

$date1 = new DateTime('2000-01-01'); 
$date2= new DateTime('now'); 
$interval=$date2->diff($date1); 
echo "Years: {$interval->y }\n"; 
echo "Months: {$interval->m }\n"; 
echo "Days: {$interval->d }\n"; 
echo "Hours: {$interval->h }\n"; 
echo "Mins: {$interval->i }\n"; 
echo "Secs: {$interval->s }\n"; 
echo $interval->format("%Y years, %m months, %d days, %H hours, %i minutes, %s seconds") . "\n"; 

Выведет:

Years: 13 
Months: 1 
Days: 11 
Hours: 13 
Mins: 14 
Secs: 44 
13 years, 1 months, 11 days, 13 hours, 21 minutes, 43 seconds 
+0

Спасибо за указание мне в правильном направлении! Я буду экспериментировать с этим позже. – msalihov

+1

Нет проблем! Некоторое время назад я столкнулся с чем-то подобным. Рад, что смог помочь. – bigmandan