Javascript 如何获取youtube iframe的当前时间而不是十进制时间?

Javascript 如何获取youtube iframe的当前时间而不是十进制时间?,javascript,time,youtube-api,youtube-iframe-api,Javascript,Time,Youtube Api,Youtube Iframe Api,我正在使用YouTube iframe API获取视频的当前时间。问题是getCurrentTime()给出的是一个十进制数字,而不是在iframe播放器上看到的时间 <html> <body> <div id="player"></div> <script> var tag = document.createElement('script'); tag.src = "https:

我正在使用YouTube iframe API获取视频的当前时间。问题是getCurrentTime()给出的是一个十进制数字,而不是在iframe播放器上看到的时间

<html>
<body>
<div id="player"></div>
<script>
      var tag = document.createElement('script');

      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

      var player;
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          height: '390',
          width: '640',
          videoId: 'PkZNo7MFNFg',
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
        });
      }

      function onPlayerReady(event) {
        event.target.playVideo();
      }

      function onPlayerStateChange(event) {
        console.log(player.getCurrentTime());
      }
</script>
</body>
</html>

var tag=document.createElement('script');
tag.src=”https://www.youtube.com/iframe_api";
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
var播放器;
函数onyoutubeiframeapiredy(){
player=新的YT.player('player'{
高度:“390”,
宽度:“640”,
videoId:'PkZNo7MFNFg',
活动:{
“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}
函数onPlayerReady(事件){
event.target.playVideo();
}
函数onPlayerStateChange(事件){
log(player.getCurrentTime());
}

是否有办法获取视频播放器上显示的时间?

您可以使用此脚本将十进制时间转换为正常时间:

function minTommss(minutes){
 var sign = minutes < 0 ? "-" : "";
 var min = Math.floor(Math.abs(minutes));
 var sec = Math.floor((Math.abs(minutes) * 60) % 60);
 return sign + (min < 10 ? "0" : "") + min + ":" + (sec < 10 ? "0" : "") + sec;
}
根据
getCurrentTime()

返回自视频开始播放以来经过的时间(秒)


您可以使用此脚本将十进制时间转换为正常时间:

function minTommss(minutes){
 var sign = minutes < 0 ? "-" : "";
 var min = Math.floor(Math.abs(minutes));
 var sec = Math.floor((Math.abs(minutes) * 60) % 60);
 return sign + (min < 10 ? "0" : "") + min + ":" + (sec < 10 ? "0" : "") + sec;
}
根据
getCurrentTime()

返回自视频开始播放以来经过的时间(秒)


我想出来了。这是为有一天可能需要这样做的任何人准备的。记住时间是以秒为单位的

function convertTime(time){
        let hours = time/3600;
        let minutes = (hours - Math.floor(hours)) * 60;
        let seconds = time % 60;

        hours = Math.floor(hours);
        minutes = Math.floor(minutes);
        seconds = Math.floor(seconds);

        if ((minutes + "").length == 1){
            minutes = "0" + minutes;
        }

        if ((seconds + "").length == 1){
            seconds = "0" + seconds;
        }

        return hours + ":" + minutes + ":" + seconds;
}

我想出来了。这是为有一天可能需要这样做的任何人准备的。记住时间是以秒为单位的

function convertTime(time){
        let hours = time/3600;
        let minutes = (hours - Math.floor(hours)) * 60;
        let seconds = time % 60;

        hours = Math.floor(hours);
        minutes = Math.floor(minutes);
        seconds = Math.floor(seconds);

        if ((minutes + "").length == 1){
            minutes = "0" + minutes;
        }

        if ((seconds + "").length == 1){
            seconds = "0" + seconds;
        }

        return hours + ":" + minutes + ":" + seconds;
}

第一个似乎不能正常工作。它没有返回正确的时间。我还没有尝试过MomentJS。更新了我的答案。我尝试过使用MomentJS,但又一次我得到了错误的时间。我想要视频播放器中的h:m:ss。正如我提到的,它应该以秒为单位返回经过的时间。所以,要么你用简单的数学把这些秒转换成小时,分钟,秒,要么这不是你想要使用的方法。在这里读更多好的,然后我来做数学。第一个似乎不正确。它没有返回正确的时间。我还没有尝试过MomentJS。更新了我的答案。我尝试过使用MomentJS,但又一次我得到了错误的时间。我想要视频播放器中的h:m:ss。正如我提到的,它应该以秒为单位返回经过的时间。所以,要么你用简单的数学把这些秒转换成小时,分钟,秒,要么这不是你想要使用的方法。在这里多读一些好的,然后我来做数学题。