dongpu1908 2018-01-30 06:55
浏览 45
已采纳

将PHP DateInterval转换为期间规范[重复]

This question already has an answer here:

Using PHP, I want to be able to go from a strtotime relative time to a datetime interval that can be used for an iCalendar duration.

An example would be something like:

$date = \DateInterval::createFromString('5 minutes');
$period = $date->doSomeMagic();
echo $period; // should echo "PT5M"

Are there any built-in PHP functions to do this? Or if there aren't, is there a library that can do it?

</div>
  • 写回答

1条回答 默认 最新

  • dongqiya9552 2018-01-30 07:15
    关注

    Perhaps something like this

    $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;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部