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

标签 php localization intl

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

1day, 1hour, 10 minutes, 14s

或者以紧凑的方式:

1d 1s 10m 14s

或者以超紧凑的方式:

1d 1.10:14

有没有办法使用不带 gettext 的 Intl 库中的构建来做到这一点? 如果不是,我可以使用自定义函数格式化时间跨度,但我是否可以从 IntlDateFormatter 获得正确区域设置中的至少名称(“天”或“d”)?

最佳答案

是的,您的问题的答案是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 day, 9 hour, 55 minutes, 12s

100d 9h 55m 12s

100d 9.55:12

关于PHP Intl 库和人类可读的时间跨度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28678233/

相关文章:

javascript - 需要帮助为 Web 应用程序配置 JavaScript 和 JSON 支持的本地化

ios - 使用内部框架本地化 iOS 应用程序

PHP7.2 缺少国际扩展

具有未知数量过滤器的 php/mysql 搜索表

php - 如何让 Laravel 5 命令像恶魔一样运行

localization - Mathematica 中的词法和动态范围 : Local variables with Module, With 和 Block

php - gettext() 在 Intl 库中等效吗?

php - PHP Preg 引擎中的错误 : look-around Unicode issue

php - 在第一行之后停止 MySQL 查询

php - 国际扩展 : installing php_intl. dll