如何在PHP中将以PT格式表示的时间长度转换为常规字符串

3
我有以下数据:
PT45M
PT1H30M

我该如何获得类似的输出?
45 min
1 hour 30 min

有没有 PHP 中可以得到像展示的输出的函数?
    $dur="PT45M"; 
    $d = new DateInterval($dur);
    $duration=$d->format('%h hour %m min');
    $duration=str_replace(" 0 min", "",$duration );
    $duration=str_replace("0 hour", "",$duration );

这是一个对我几乎有用的解决方案。但在 PT45M 上它显示为 0 小时。 :(
这可能是一个简单的函数,但我无法找到解决方案。在谷歌上花了很多时间 :( 希望有人能帮助我。
3个回答

2
以下是解决方案。我使用了%m而不是%i来表示分钟。(%m是表示数字月份的)。
以下是文档说明:https://www.php.net/manual/en/function.date.php
    $dur="PT45M"; 
    $d = new DateInterval($dur);
    $duration=$d->format('%h hour %i min');
    $duration=str_replace(" 0 min", "",$duration );
    $duration=str_replace("0 hour", "",$duration );

2
一个函数,从DateInterval对象创建一个易于阅读的格式:
function dateIntervalToHumanString(\DateInterval $interval) {
  $units = array("y"=>"year","m"=>"month","d"=>"day","h"=>"hour","i"=>"minute","s"=>"second");
  $specString = "";
  foreach($units as $prop => $spec){
    if($number=$interval->$prop){
      $specString .= $number." ".$spec;
      $specString .= $number > 1 ? "s " : " ";
    }  
  }
  return trim($specString); 
}

如何使用它?

$specStr = 'P2Y4DT1H8M';
$di = new DateInterval($specStr);
$humanString = dateIntervalToHumanString($di);
echo $humanString;  //2 years 4 days 1 hour 8 minutes

1
     <?php
      $date = new DateTime();
      $dur="PT1H30M"; 
      $datetime1 = new DateInterval($dur);

      if($datetime1->format('%y') != 0)
      {
         echo $datetime1->format('%y Year');
      }
      if($datetime1->format('%m') != 0)
      {
         echo $datetime1->format('%m Month');
      }
      if($datetime1->format('%d') != 0)
      {
         echo $datetime1->format('%d Day');
      }
      if($datetime1->format('%h') != 0)
      {
         echo $datetime1->format('%h Hour');
      }
      if($datetime1->format('%i') != 0)
      {
         echo $datetime1->format('%i Min');
      }
      if($datetime1->format('%s') != 0)
      {
         echo $datetime1->format('%s Second');
      }

  ?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接