如何在PHP中比较两个ISO 8061持续时间?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在PHP中比较两个ISO 8061持续时间?相关的知识,希望对你有一定的参考价值。

我有两个ISO 8061持续时间,PT11M41SPT49M13S。我该如何比较它们? (我需要一个布尔值,指示第一个持续时间是否大于第二个持续时间。)

答案

您可以非常简单地使用php DateTime对象执行此操作

<?php 

$t1 = 'PT11M41S';
$t2 = 'PT49M13S';

$d1 = new DateTime();
$d2 = new DateTime();

$d1->add(new DateInterval($t1));
$d2->add(new DateInterval($t2));

$diff =  $d1 > $d2 ? true : false;
echo $diff ? 'TRUE' : 'FALSE';
另一答案

我在这里看到一个非常好的答案,但我只想补充一点,有很多方法可以正确实现这一点。例如:

class ExDateInterval extends DateInterval{
    public function toSeconds($daysInMonth=30){
        $daysInMonth=!is_int($daysInMonth)||$daysInMonth>31||$daysInMonth<28?30:$daysInMonth;
        $interval=$this->y*31536000+$this->d*86400+$this->h*3600+$this->i*60+$this->s+$this->m*$daysInMonth*86400;
        return $interval;
    }
}

$t1='PT11M41S';
$t2='PT49M13S';

$interval1=new ExDateInterval($t1);
$interval2=new ExDateInterval($t2);

var_dump($interval1->toSeconds()>$interval2->toSeconds());//output false
var_dump($interval1->toSeconds()===$interval2->toSeconds());//output false
var_dump($interval1->toSeconds()<$interval2->toSeconds());//output true

以上是关于如何在PHP中比较两个ISO 8061持续时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 ISO 8061 字符串日期时间派生以获取 Python3 中的时区名称? [复制]

Flutter: DateTime 作为改造方法中的参数; DateTime ISO 8061 序列化;改造日期 iso8061 格式

如何比较两个PHP多维数组

如何比较 Luxon 中的持续时间或间隔?

在Postman中如何设置环境变量?

如何将汉字转换为iso-8859-1的字符串 - PHP进阶讨论