Php DateInterval因十进制数而失败
我有一个ISO格式的持续时间,我需要将其转换为秒数。我使用函数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
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
的格式,但是如果检测到无效,你该怎么做是在你身上。谢谢,我将尝试使用正则表达式:)阅读这是以前的一个主题