Php DateInterval因十进制数而失败

Php DateInterval因十进制数而失败,php,time,iso,Php,Time,Iso,我有一个ISO格式的持续时间,我需要将其转换为秒数。我使用函数DateInterval提取年、月、日、时、分和秒,并将其转换为秒。但我有一个问题:当ISO格式的持续时间仅包含intnumber(PT2M2S)时,DateInterval函数工作正常,但当持续时间包含十进制数(PT2M2.6S)时,DataInterval函数不工作 例如:$session_time=“PT2M2S” 当我使用DataInterval时: `$interval = new DateInterval($session

我有一个ISO格式的持续时间,我需要将其转换为秒数。我使用函数
DateInterval
提取
年、月、日、时、分和秒
,并将其转换为秒。但我有一个问题:当ISO格式的持续时间仅包含
int
number(PT2M2S)时,
DateInterval
函数工作正常,但当持续时间包含十进制数(PT2M2.6S)时,
DataInterval
函数不工作

例如:$session_time=
“PT2M2S”
当我使用
DataInterval
时:

`$interval = new DateInterval($session_time);` 
$sessionTimeBySeconde = $interval->y*525600*60 + $interval->m*43800*60 + $interval->h*3600 + $interval->i*60 + $interval->s;
在这个cas中,它工作得非常好

现在如果我有一个例子:$session_time=
“PT2M2.6S”
如果我像上面那样使用DataInterval:

`$interval = new DateInterval($session_time);` 
$sessionTimeBySeconde = $interval->y*525600*60 + $interval->m*43800*60 + $interval->h*3600 + $interval->i*60 + $interval->s;
在这种情况下它不起作用

对于我不负责值
$session\u time
的信息,我只是从另一个系统获取它,并将其转换为秒


我能做什么

“PT2M2.6S”
格式不好,因此无法工作。您应该使用
错误报告(E_ALL)进行调试@justonUndermillion谢谢你的回复,你证实了我的怀疑。。。不幸的是,我不对这个值负责,它是另一个系统发送给我这个值。。。你知道我能解决这个问题吗?不知道,也许是一个正则表达式,它可以在与DateIntervall一起使用之前验证类似于
PT2M2S
的格式,但是如果检测到无效,你该怎么做是在你身上。谢谢,我将尝试使用正则表达式:)阅读这篇文章这是
“PT2M2.6S”之前的一个主题
格式不好,因此无法使用。您应该使用
错误报告(E_ALL)进行调试@justonUndermillion谢谢你的回复,你证实了我的怀疑。。。不幸的是,我不对这个值负责,它是另一个系统发送给我这个值。。。你知道我能解决这个问题吗?不知道,也许是一个正则表达式,它可以在与DateIntervall一起使用之前验证类似于
PT2M2S
的格式,但是如果检测到无效,你该怎么做是在你身上。谢谢,我将尝试使用正则表达式:)阅读这是以前的一个主题