什么样的时间格式是这样的

时间:2016-03-02 14:45:36

标签: php

我从某些api获取了一些数据,并且我有时间使用以下格式/

PT127M
PT95M

分别表示127分钟和95分钟。我希望从默认功能获得127.现在我正在使用下面的快捷方式

$duration = "PT127M";
$duration = preg_replace("/[^0-9]/","",$duration);

有人告诉我这是什么类型的格式,以及是否有任何可用的PHP函数来从中检索分钟。

2 个答案:

答案 0 :(得分:4)

可能与ISO 8601 Duration日期格式有关:

  

解决歧义," P1M"是一个月的持续时间" PT1M"是一分钟的持续时间(注意时间指示符T,它在时间值之前)。使用的最小值也可能有小数,如" P0.5Y"表示半年。这个小数部分可以用逗号或句号指定,如" P0,5Y"或" P0.5Y"。该标准并未禁止持续时间表示中的日期和时间值超过其超过"结转点"除非如下所述。因此," PT36H"可以和" P1DT12H"表示相同的持续时间。但请记住," PT36H"与#34; 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

答案 1 :(得分:4)

你可以得到这样的分钟:

    $duration = 'PT127M';
    $di = new DateInterval($duration);
    $minutes =  $di->format('%i');

此处有更多信息:http://php.net/manual/en/class.dateinterval.php