3

JSON を使用して Youtube API 経由で返される各ビデオの長さを取得して出力しようとしています。期間は次のように出力する必要があります。

秒単位ではなく 9:34 分

しかし、私は次に何をすべきかわかりません。現在、次のコードを使用しています。

function showMyVideos2(data) {
var feed = data.feed;
var entries = feed.entry || [];
var html = ['<ul class="videos">'];
for (var i = 0; i < entries.length; i++) {
var entry = entries[i];
var title = entry.title.$t.substr(0, 20);
var thumbnailUrl = entries[i].media$group.media$thumbnail[0].url;
var playerUrl = entries[i].media$group.media$content[0].url;
html.push('<li>',
          '<a href="', playerUrl, '" rel="vidbox 686 315"><img src="', 
          thumbnailUrl, '" width="130" height="97"/></a>', '<span class="titlec"><a      href="', playerUrl, '" rel="vidbox 686 315">', title, '... </a></span></li>');
}
html.push('</ul><br style="clear: left;"/>');
document.getElementById('videos2').innerHTML = html.join('');
if (entries.length > 0) {
loadVideo(entries[0].media$group.media$content[0].url, false);
}
}
4

1 に答える 1

1

YouTube API は再生時間のみを秒単位で出力します。ただし、秒を必要な時間形式に変換する関数を作成できます。

function formatSecondsAsTime(secs) {
    var hr = Math.floor(secs / 3600);
    var min = Math.floor((secs - (hr * 3600)) / 60);
    var sec = Math.floor(secs - (hr * 3600) - (min * 60));

    if (hr < 10) {
        hr = "0" + hr;
    }
    if (min < 10) {
        min = "0" + min;
    }
    if (sec < 10) {
        sec = "0" + sec;
    }
    if (hr) {
        hr = "00";
    }

    return hr + ':' + min + ':' + sec;
}

次のように期間フィールドを関数に渡すだけです。

var videoTime = formatSecondsAsTime(entries[i].media$group.media$content[0].duration);
于 2013-03-12T12:23:49.417 に答える