将“hh:mm”-string转换为HTML5微格式持续时间

时间:2013-05-07 11:49:37

标签: php datetime microdata iso8601 dateinterval

我正在尝试转换格式为“HH:MM”的字符串(例如,01:25-1小时25分钟),以用作食谱页面中的微数据。

我可以从字符串中创建一个DateTime对象,如下所示:

$time = date_create_from_format("H:i", get_field("tilberedningstid"));

但是如何将此DateTime对象转换为合法的ISO8601持续时间格式?

我觉得我已经尝试了一切。我玩了DateInterval类,它应该输出(我认为?)正确的格式,即PT1H25M,但我似乎无法将我的DateTime对象转换为格式,DateInterval可以解释。我已经尝试了$interval = DateInterval($time->format(DateTime::ISO8601));DateInterval类应该支持它。

所以问题很简单:如何将字符串“01:25”(HH:MM)转换为ISO8601字符串PT1H25M以便在微格式中使用,在php中?

1 个答案:

答案 0 :(得分:2)

为什么使用日期间隔?你可以使用格式。但是因为PTHM字符也是有效的代码,你必须逃避它们。

<?php
$date = new DateTime('01:25');
echo $date->format('\P\TG\Hi\M');
//output: PT1H25M
?>

有关有效代码,请参阅date;有关如何使用这些代码,请参见DateTime::format