将"hh:mm"字符串转换为HTML5微格式持续时间


Convert a "hh:mm"-string to HTML5 microformat duration

我正在尝试转换格式为"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中?

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

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

查看有效代码的日期和DateTime::格式如何使用它们