0

我正在尝试转换格式为“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 中以微格式使用?

4

1 回答 1

2

你为什么使用日期间隔?你可以只使用格式。但是因为 PTHM 字符也是有效代码,所以您必须对它们进行转义。

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

请参阅日期以获取有效代码和DateTime::format以了解如何使用它们

于 2013-05-07T11:55:55.760 回答