我正在开发一个webservice,返回一个xml文件,以这种方式格式化持续时间:
P0Y0M0DT5H50M0.000S
在上面的示例中,它表示持续时间为5小时50分钟
是否存在可以读取此时间格式或将其转换为时间戳的php函数? 我尝试使用strtotime()和DateTime对象,但它返回false或致命错误。 谢谢。
答案 0 :(得分:0)
假设您的模式一致,您可以使用正则表达式匹配:
$timestamp = 'P0Y0M0DT5H50M0.000S';
preg_match('~T(?P<Hours>\d{1,2})H(?P<Minutes>\d{1,2})M(?P<Seconds>\d{1}\.\d{3})S~', $timestamp, $matches);
print_r($matches);
Array
(
[0] => T5H50M0.000S
[Hours] => 5
[1] => 5
[Minutes] => 50
[2] => 50
[Seconds] => 0.000
[3] => 0.000
)
答案 1 :(得分:0)
由于我遇到了这个问题,因此尚未提及用于解析ISO间隔的PHP DateInterval class。它不像示例中那样支持小数秒,但否则可以很好地进行解析:
new DateInterval( 'P0Y0M0DT5H50M0S' )
给出以下结果:
class DateInterval#2425 (15) {
public $y =>
int(0)
public $m =>
int(0)
public $d =>
int(0)
public $h =>
int(5)
public $i =>
int(50)
public $s =>
int(0)
public $weekday =>
int(0)
public $weekday_behavior =>
int(0)
public $first_last_day_of =>
int(0)
public $invert =>
int(0)
public $days =>
bool(false)
public $special_type =>
int(0)
public $special_amount =>
int(0)
public $have_weekday_relative =>
int(0)
public $have_special_relative =>
int(0)