将PHP日期间隔转换为期间规范

将PHP日期间隔转换为期间规范,php,Php,使用PHP,我希望能够从strotime转换为datetime间隔,该间隔可以用于iCalendar的持续时间 例如: $date = \DateInterval::createFromString('5 minutes'); $period = $date->doSomeMagic(); echo $period; // should echo "PT5M" 是否有任何内置的PHP函数来执行此操作?或者如果没有,是否有一个库可以做到这一点?也许 我希望魔术能给我5分钟的时间;因为P5M

使用PHP,我希望能够从strotime转换为datetime间隔,该间隔可以用于iCalendar的持续时间

例如:

$date = \DateInterval::createFromString('5 minutes');
$period = $date->doSomeMagic();
echo $period; // should echo "PT5M"
是否有任何内置的PHP函数来执行此操作?或者如果没有,是否有一个库可以做到这一点?

也许


我希望魔术能给我5分钟的时间;因为P5M是5months@MarkBaker-哈,谢谢-更正了它:这是一个完美的例子,说明了为什么我希望它是strotime格式而不是句号格式。。。
$date = \DateInterval::createFromDateString('2 days 5 minutes');

function doSomeMagic(\DateInterval $date) {
    $interval = 'P' .
        ($date->y == 0 ? null : $date->y . 'Y') .
        ($date->m == 0 ? null : $date->m . 'M') .
        ($date->d == 0 ? null : $date->d . 'D');
    $timeInterval =
        ($date->h == 0 ? null : $date->h . 'H') .
        ($date->i == 0 ? null : $date->i . 'M') .
        ($date->s == 0 ? null : $date->y . 'S');
    return $interval . ((!empty($timeInterval)) ? 'T' . $timeInterval : null);
}


$period = doSomeMagic($date);
echo $period;