2015-02-23 32 views
3

我正在使用PHP国际图书馆格式化日期,数字等。 现在,我必须表现出人类可读的字符串的时间跨度,例如:PHP国际图书馆和人类可读时间跨度

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

或以紧凑的方式:

1D 1S 10米14S

或超浓缩方式:

1D 1.10:14

有没有办法做到这一点使用在国际图书馆建立一个没有gettext的? 如果不是,我可以使用自定义函数格式化时间范围,但是我能从IntlDateFormatter中获取正确语言环境中的至少名称('day'或'd')吗?

回答

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

100D 9H55米12S

100d 9.55:12