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

PHP Intl库和人类可读的时间跨度,php,localization,intl,Php,Localization,Intl,我正在使用PHPINTL库格式化日期、数字等。 现在我必须用人类可读的字符串显示时间跨度,例如: 1天1小时10分钟14秒 或以紧凑的方式: 1d 1s 10m 14s 或者以超紧凑的方式: 1d 1.10:14 使用内置Intl库而不使用gettext有什么方法可以做到这一点吗? 如果否,我可以使用自定义函数设置时间跨度的格式,但我是否可以从IntlDateFormatter中至少获取正确区域设置中的名称(“天”或“d”)?是,您的问题的答案是DateInterval。根据需要,您可以这样使用

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

1天1小时10分钟14秒

或以紧凑的方式:

1d 1s 10m 14s

或者以超紧凑的方式:

1d 1.10:14

使用内置Intl库而不使用gettext有什么方法可以做到这一点吗?
如果否,我可以使用自定义函数设置时间跨度的格式,但我是否可以从IntlDateFormatter中至少获取正确区域设置中的名称(“天”或“d”)?

是,您的问题的答案是
DateInterval
。根据需要,您可以这样使用它:

$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