我有一个MySQL表,以HH:MM:SS
的格式存储持续时间我想使用PHP将这些MySQL时间条目转换为ISO 8601持续时间。
例如,我想将00:01:23数据库中的条目转换为PT1M23S
如果持续时间以小时为单位,01:23:04之类的条目将输出为PT1H23M4S
非常感谢任何帮助!
答案 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;
?>
答案 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;
}
...当然,您希望在生产环境中添加一些错误检查,这假设您的表格最多只有几个小时。