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


PHP Intl library and human readable time span

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

1天1小时10分钟14秒

或者以紧凑的方式:

1d 1s 10m 14s

或者以超紧凑的方式:

1d 1.10:14

有没有任何方法可以使用不带gettext的内置Intl库来实现这一点?如果没有,我可以用自定义函数格式化时间跨度,但我可以从IntlDateFormatter中至少获得正确区域设置的名称("day"或"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