似乎有很多信息将时间段转换为时间段,但不是相反。
我需要做的一个例子是将120分钟转换为P0DT2H0M0S。 并且13:10进入P0DT13H10M0S。 进入PT2H0M0S 120分钟。
任何快速简便的方法吗?
答案 0 :(得分:1)
我相信您描述的格式是ISO 8601日期/时间格式。 Here's how it describes intervals.
在DateInterval
类的PHP文档中,有人分享了如何以面向对象的方式将字符串转换为ISO 8601的示例:
http://www.php.net/manual/en/class.dateinterval.php#113415
以下是其他人的解决方案,使用功能而非面向对象的日期方法:
答案 1 :(得分:0)
获得ISO-8601时间间隔持续时间的最简单方法是使用方法createFromDateString
echo getISO8601duration_withZeros("3 year 20 day 15 minute"); # P3Y0M20DT0H15M0S
echo getISO8601duration_withZeros("1 hour 120 minutes"); # P0Y0M0DT1H120M0S
echo getISO8601duration_withZeros("7 year 5 month 3 day"); # P7Y5M3DT0H0M0S
# 13:10 example
$dt = new DateTime('13:10');
$interval_spec = "{$dt->format('H')} hour {$dt->format('i')} minute";
echo getISO8601duration_withZeros($interval_spec); # P0Y0M0DT13H10M0S
function getISO8601duration_withZeros($interval_spec) {
$interval = DateInterval::createFromDateString($interval_spec);
return $interval->format('P%yY%mM%dDT%hH%iM%sS');
}