PHP Intl库和人类可读的时间跨度

时间:2015-02-23 16:19:03

标签: php localization intl

我正在使用PHP Intl库来格式化日期,数字等。 现在我必须在人类可读的字符串中显示时间跨度,例如:

  

1天,1小时,10分钟,14秒

或以紧凑的方式:

  

1d 1s 10m 14s

或以超紧凑的方式:

  

1d 1.10:14

有没有办法在没有gettext的情况下使用Intl库中的构建? 如果不是,我可以使用自定义函数格式化时间跨度,但是我是否可以从IntlDateFormatter中获取正确语言环境中的名称('day'或'd')?

1 个答案:

答案 0 :(得分:2)

是的,您的问题的回答是DateInterval。根据{{​​3}},您可以这样使用它:

$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分钟,12秒

     

100d 9h 55m 12s

     

100d 9.55:12