2017-06-15 62 views
0

因此,從api接收到的持續時間/時間格式是this;使用PHP將youtube api返回的時間格式轉換爲秒數

PT1H1M6S 

我該如何將此轉換爲使用任何PHP函數秒?

+0

的可能的複製[轉換YouTube數據API V3視頻持續時間格式,以秒在JavaScript/Node.js的](https://stackoverflow.com/questions/22148885/converting-youtube-data-api-v3- video-duration-format-to-seconds-in-javascript-no) – ficuscr

+0

其他更多[PHP特定](https://stackoverflow.com/questions/24393230/convert-youtube-api-v3-video-duration-in -php),但這是更好的答案。無論如何,解析JS也許是有意義的?不知道你的情況。 – ficuscr

+0

@ficuscr,我試過這個php解決方案,但它給出了小時分鐘和秒的格式。我正在尋找只有幾秒鐘的格式。 –

回答

1

以下是我在Google上如何將ISO 8601值轉換爲秒的最佳解決方案。

+1無preg功能使用。我認爲這項工作是正確的工具。

代碼信貸RuudBurger - 從要點複製:https://gist.github.com/w0rldart/9e10aedd1ee55fc4bc74

/** 
* Convert ISO 8601 values like P2DT15M33S 
* to a total value of seconds. 
* 
* @param string $ISO8601 
*/ 
function ISO8601ToSeconds($ISO8601){ 
    $interval = new \DateInterval($ISO8601); 

    return ($interval->d * 24 * 60 * 60) + 
     ($interval->h * 60 * 60) + 
     ($interval->i * 60) + 
     $interval->s; 
} 

echo ISO8601ToSeconds('P20DT15M33S'); // Returns a value of 1728933 
+0

它的工作。謝謝 –

-1

這可以通過使用正則表達式來完成: ^ PT(?:(\ d +)H)?(?:(\ d +)M)?(?:(\ d +)S)$ 然後,您可以?使用各種PHP方法來操縱RegEx以將時間存儲在變量中。

0

PHP函數ISO8601時間轉換成秒。

<?php 

function convertISO8601DurationToSeconds($iso8601DurationStr) 
{ 
    $interval = new \DateInterval($iso8601DurationStr); 
    $seconds = $interval->h * 3600 + $interval->i * 60 + $interval->s; 
    return (int) $seconds; 
} 

    echo convertISO8601DurationToSeconds('PT1H1M6S'); 

?>