Как я могу сравнить две длительности ISO 8061 в PHP?

У меня есть две продолжительности ISO 8061, PT11M41S а также PT49M13S, Как я могу их сравнить? (Мне нужно логическое значение, которое указывает, является ли первая продолжительность большей, чем вторая.)

0

Решение

Вы можете сделать это с помощью объекта 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';
1

Другие решения

Я вижу действительно хороший ответ, но я просто хочу добавить, что есть много способов добиться этого должным образом. Например:

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
0

По вопросам рекламы [email protected]