【问题标题】:PHP Intl library and human readable time spanPHP Intl 库和人类可读的时间跨度
【发布时间】:2015-04-25 00:56:36
【问题描述】:

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

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

或以紧凑的方式:

1d 1s 10m 14s

或以超级紧凑的方式:

1d 1.10:14

有没有什么方法可以在没有 gettext 的情况下使用 Intl 库中的构建来做到这一点? 如果不是,我可以使用自定义函数格式化时间跨度,但我至少可以从 IntlDateFormatter 获取正确语言环境中的名称(“day”或“d”)吗?

【问题讨论】:

    标签: php localization intl


    【解决方案1】:

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

    100 天 9.55:12

    【讨论】:

      猜你喜欢
      • 2010-11-21
      • 2015-04-06
      • 2011-05-26
      • 1970-01-01
      • 2011-10-01
      • 2014-12-20
      • 2021-11-13
      • 2011-07-21
      • 2016-07-05
      相关资源
      最近更新 更多