如何在php中将PT格式的持续时间转换为常规字符串
我有如下数据如何在php中将PT格式的持续时间转换为常规字符串,php,date,datetime,formatting,Php,Date,Datetime,Formatting,我有如下数据 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_rep
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小时:(
这可能是一个简单的函数,但我找不到解决方案。我在谷歌上花了很多时间:(希望有人能帮我解决这个问题。下面给出了解决方案。我用%m代替了用%I几分钟。(%m代表数字月) 以下是文件:
从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
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