我从一些API得到一些数据,我得到一次在下列格式/什么样的时间格式是这样的
PT127M
PT95M
respectively.I要从此获得127这意味着127分钟,95分钟默认functions.Right我现在用类似下面
$duration = "PT127M";
$duration = preg_replace("/[^0-9]/","",$duration);
有些人告诉我什么样的格式是这样的,如果有可以从中检索分钟内没有任何PHP函数的捷径。
我从一些API得到一些数据,我得到一次在下列格式/什么样的时间格式是这样的
PT127M
PT95M
respectively.I要从此获得127这意味着127分钟,95分钟默认functions.Right我现在用类似下面
$duration = "PT127M";
$duration = preg_replace("/[^0-9]/","",$duration);
有些人告诉我什么样的格式是这样的,如果有可以从中检索分钟内没有任何PHP函数的捷径。
这可能与ISO 8601 Duration日期格式:
要解决歧义,“P1M”是一个为期一个月的持续时间和“PT1M”是一分钟的时间(注意时间标志,T,时间值之前)。使用的最小值也可能有小数部分,如在“P0.5Y”中表示半年。如“P0,5Y”或“P0.5Y”中所示,可以用逗号或句号指定该小数部分。该标准不会禁止持续时间表示中的日期和时间值超过其“结转点”,除非如下所述。因此,可以使用“PT36H”以及“P1DT12H”来表示相同的持续时间。但请记住,从夏令时切换到“夏令时”时,“PT36H”与“P1DT12H”不同。
您可以使用DateInterval在PHP解析:
这里有一些简单的例子。两天是P2D。两秒钟是PT2S。六年零五分钟是P6YT5M。
有了这个信息,你可以用这个代码解析您的$duration
对象:
$duration = 'PT127M';
$duration = new DateInterval($duration); // Create a DateInteval Object
echo $duration->format('%i'); // Print minutes from DateInterval Object
你可以分这样的:
$duration = 'PT127M';
$di = new DateInterval($duration);
$minutes = $di->format('%i');
与Florian的回答有什么不同? – jurgemaister
我们同时发布。在测试后,我使用代码编辑了我的答案;) –
弗洛里安在发布这篇文章后编辑了他的答案。此外,我不使用相同的变量为不同的对象类型:) – Karolis
看起来像API特定的API文档中未提及吗? – dmaij
不,我认为它的一些标准时间格式 – Vishnu
奇怪,我不记得这些格式,除了在事件持续时间中使用的1。 – dmaij