如何以正确的形式获得秒、分和小时?

how to get seconds, minutes, and hours in a proper form?

我设法创建了这段代码来设置歌曲的计时器......问题是,如您所见,我必须为两个不同的功能重复同一行代码("tiempo" 和 "duracion") 其中唯一的区别是,在一个中我想知道 .duration 时间,在另一个中我想知道 .currentTime.

所以我想把重复的那部分代码隔离出来,稍后再调用,但我不知道该怎么做。

变量 "totalNumberOfSeconds" 需要在两个函数中更改它的内容,如果我隔离重复的代码 "result" 是 NaN。

"audio" 是包含 html 中带有歌曲的标签 <audio> 的变量,"timer" 是包含“0: 00/0:00" 用于计时。

** **

audio.ontimeupdate = function() {totalTiempo()};

function totalTiempo() {
    document.getElementById("timer").innerHTML = tiempo() + '/' + duracion()
}


function tiempo() {
     totalNumberOfSeconds = Math.floor(audio.currentTime)
     const hours = parseInt( totalNumberOfSeconds / 3600 );
     const minutes = parseInt( (totalNumberOfSeconds - (hours * 3600)) / 60 );
     const seconds = Math.floor((totalNumberOfSeconds - ((hours * 3600) + (minutes * 60))));
     const result = (minutes < 10 ?  + minutes : minutes) + ":" + (seconds  < 10 ? "0" + seconds : seconds);
     console.log(result)
     return result
}

function duracion() {
     totalNumberOfSeconds = Math.floor(audio.duration)
     const hours = parseInt( totalNumberOfSeconds / 3600 );
     const minutes = parseInt( (totalNumberOfSeconds - (hours * 3600)) / 60 );
     const seconds = Math.floor((totalNumberOfSeconds - ((hours * 3600) + (minutes * 60))));
     const result = (minutes < 10 ?  + minutes : minutes) + ":" + (seconds  < 10 ? "0" + seconds : seconds);
     console.log(result)
     return result
}

你可以通过创建一个带参数的函数来做到这一点,就像这样:

function convertTimeToString(time) {
     totalNumberOfSeconds = Math.floor(time)
     const hours = parseInt( totalNumberOfSeconds / 3600 );
     const minutes = parseInt( (totalNumberOfSeconds - (hours * 3600)) / 60 );
     const seconds = Math.floor((totalNumberOfSeconds - ((hours * 3600) + (minutes * 60))));
     const result = (minutes < 10 ?  + minutes : minutes) + ":" + (seconds  < 10 ? "0" + seconds : seconds);
     console.log(result)
     return result
}

您稍后可以使用您想要的任何变量调用此函数,如下所示:

function tiempo() {
     return convertTimeToString(audio.currentTime)
}

function duracion() {
     return convertTimeToString(audio.duration)
}

您也可以在 getTotalTiempo 函数中直接调用它,如下所示:

function totalTiempo() {
    document.getElementById("timer").innerHTML = convertTimeToString(audio.currentTime) + '/' + convertTimeToString(audio.duration)
}

 
function totalTiempo() {
    document.getElementById("timer").innerHTML = tiempo(audio.currentTime) + '/' + duracion(audio.duration)
}
    function getTime(time) {
         totalNumberOfSeconds = Math.floor(time)
         const hours = parseInt( totalNumberOfSeconds / 3600 );
         const minutes = parseInt( (totalNumberOfSeconds - (hours * 3600)) / 60 );
         const seconds = Math.floor((totalNumberOfSeconds - ((hours * 3600) + (minutes * 60))));
         const result = (minutes < 10 ?  + minutes : minutes) + ":" + (seconds  < 10 ? "0" + seconds : seconds);
         console.log(result)
         return result
    }