2015-02-23 1 views
3

Я использую библиотеку PHP Intl для форматирования дат, чисел и т. Д. Теперь я должен показать промежуток времени в читаемую строку человека, например:PHP Intl library и человеко-читаемый временной интервал

1Day, 1час, 10 минут, 14s

или в компактном виде:

1d 1s 10m 14s

или в суперкомпактного образом:

1d 1,10: 14

Есть ли способ сделать это, используя встроенный в библиотеке Intl без Gettext? Если нет, я могу отформатировать временной интервал с помощью настраиваемой функции, но могу ли я получить хотя бы имена («день» или «d») в правильной локали из IntlDateFormatter?

ответ

2

Да, ответ на ваш вопрос: DateInterval. По documentation вы можете использовать его таким образом:

$pastDate = new DateTime('2015-09-01 15:00:00'); 
$today = new DateTime(); 

//calculate interval and returns DateInterval object 
$timeSpan = $today->diff($pastDate); 

//now we'll format it 
echo $timeSpan->format('%a day, %h hour, %i minutes, %ss').PHP_EOL; 
echo $timeSpan->format('%ad %hh %im %ss').PHP_EOL; 
echo $timeSpan->format('%ad %h.%i:%s').PHP_EOL; 

Результат будет:

100 день, 9 часов, 55 минут, 12s

100d 9h 55m 12s

100d 9,55: 12

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