如何使用PHP将MySQL时间转换为ISO 8601持续时间

时间:2017-02-05 00:49:20

标签: php mysql

我有一个MySQL表,以HH:MM:SS

的格式存储持续时间

我想使用PHP将这些MySQL时间条目转换为ISO 8601持续时间。

例如,我想将00:01:23数据库中的条目转换为PT1M23S

如果持续时间以小时为单位,01:23:04之类的条目将输出为PT1H23M4S

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

你可以这样做

 <?php 
   $time = "1:23:4";
   $converted = date('\P\TH\Hi\Ms\S', strtotime ($time));
   $converted = str_replace (['00H','00M','00H','0'],'',     $converted);
   echo $converted;
 ?>

演示:https://eval.in/730495

答案 1 :(得分:0)

有很多方法可以解决这个问题,但是简单(并且希望可读)的方法可能是:

 function hmsTo8601($hmsTime)
 {
      $ret = "PT";
      $arr = array_reverse(explode(':',$hmsTime));
      $ct = count($arr);
      if ($ct >= 3) $ret.=$arr[2].'H';
      if ($ct >= 2) $ret.=$arr[1].'M';
      if ($ct >= 1) $ret.=$arr[0].'S';
      return $ret;
 }

...当然,您希望在生产环境中添加一些错误检查,这假设您的表格最多只有几个小时。