2016-03-02 49 views
1

我從一些API得到一些數據,我得到一次在下列格式/什麼樣的時間格式是這樣的

PT127M 
PT95M 

respectively.I要從此獲得127這意味着127分鐘,95分鐘默認functions.Right我現在用類似下面

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

有些人告訴我什麼樣的格式是這樣的,如果有可以從中檢索分鐘內沒有任何PHP函數的捷徑。

+0

看起來像API特定的API文檔中未提及嗎? – dmaij

+0

不,我認爲它的一些標準時間格式 – Vishnu

+0

奇怪,我不記得這些格式,除了在事件持續時間中使用的1。 – dmaij

回答

4

這可能與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 
4

你可以分這樣的:

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

此處瞭解詳情:http://php.net/manual/en/class.dateinterval.php

+0

與Florian的回答有什麼不同? – jurgemaister

+0

我們同時發佈。在測試後,我使用代碼編輯了我的答案;) –

+0

弗洛裏安在發佈這篇文章後編輯了他的答案。此外,我不使用相同的變量爲不同的對象類型:) – Karolis