2013-09-27 73 views
10

JavaScriptを使用してPT#M#Sの形式で日付時刻を操作するにはどうすればよいですか?例えばYouTube API期間(ISO 8601期間をフォーマットPT#M#Sで)を秒に変換する方法

PT5M33S

私はhh:mm:ssとして出力したいと思います。

+1

Fiddle:https://jsfiddle.net/Daugilas/kbeb0p99/1/ –

+1

@Daugilas Kakarasとても良いです!しかし、あなたは機能を更新する必要があります。 P1D - (1日)のようなフォーマットが機能しないとき。 –

+1

@ Serhiog.Lazin、true - updated:https://jsfiddle.net/kbeb0p99/4/ *かなり長い時間が経ちました:) –

答えて

19

ここには、秒数とその他の部分の合計数を取得するための基本的なコードがあります。 ルールによれば、論理を日付にしたいと思うときは、いつもそうするべきではないと言われているので、私はこれをやっているのが気になりません:)しかし、とにかく、ここに行く - GoogleはgetdurationプレーヤーAPIに総秒数を提供し、 gdata APIの異なるフォーマット。ここで

  var reptms = /^PT(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?$/; 
      var hours = 0, minutes = 0, seconds = 0, totalseconds; 

      if (reptms.test(input)) { 
      var matches = reptms.exec(input); 
      if (matches[1]) hours = Number(matches[1]); 
      if (matches[2]) minutes = Number(matches[2]); 
      if (matches[3]) seconds = Number(matches[3]); 
      totalseconds = hours * 3600 + minutes * 60 + seconds; 
      } 
+0

ありがとう、ちょっとした調整をして、私が必要としたのと同じように動作させました。 – Nicholas

+0

'duration:" PT26M "' –

4

は、あなたが簡単な方法でYouTubeのAPI(V3)経由ユーチューブのビデオデータを取得し、秒にビデオ再生時間(ISO 8601)に変換する方法です。 {YOUR VIDEO ID}{YOUR KEY}キーあなた動画IDとあなたの公共GoogleにURLで属性を変更することを忘れないでください。 Google開発者コンソールにアクセスする公開鍵を作成できます。

$.ajax({ 
     url: "https://www.googleapis.com/youtube/v3/videos?id={ YOUR VIDEO ID }&part=contentDetails&key={ YOUR KEY }", 
     dataType: "jsonp", 
     success: function (data) { youtubeCallback (data); } 
    }); 

    function youtubeCallback(data) { 

     var duration = data.items[0].contentDetails.duration; 
     alert (convertISO8601ToSeconds (duration)); 
    }   

    function convertISO8601ToSeconds(input) { 

     var reptms = /^PT(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?$/; 
     var hours = 0, minutes = 0, seconds = 0, totalseconds; 

     if (reptms.test(input)) { 
      var matches = reptms.exec(input); 
      if (matches[1]) hours = Number(matches[1]); 
      if (matches[2]) minutes = Number(matches[2]); 
      if (matches[3]) seconds = Number(matches[3]); 
      totalseconds = hours * 3600 + minutes * 60 + seconds; 
     } 

     return (totalseconds); 
    } 
+0

どのくらい '期間について:" PT26M "' –

0

これらの回答は技術的に正確ですが、多くの時間と時間を費やす予定がある場合はmomentjsをチェックしてください。また、定期的なmomentjs時間

これら2モジュールの出力は以下となり5時33分、この

moment.duration('PT5M33S').format('hh:mm:ss') 

を作るどのように簡単の例と同じように簡単な書式設定期間を作るmoment-duration-formatsをチェックしてください。他にもたくさんの用途があります。

youtubeには標準であるためISO8601フォーマットが使用されている理由はありますが、そのことを念頭に置いてください。

関連する問題