将刻度转换为时间格式(hh:mm:ss)

时间:2013-01-16 01:42:30

标签: javascript html time

我从网络服务器获取视频长度值作为滴答。我想以“hh:mm:ss”格式显示它。我怎么能用JavaScript做到这一点?

3 个答案:

答案 0 :(得分:10)

假设刻度以秒为单位(如果不是,则可以将它们先转换为秒数),您可以通过查找时间跨度中的整分钟数和小时数来获得所需的格式,然后取剩余秒数。 modulo运算符在这里很有用,因为一小时是3600秒,一分钟是60秒:

function displayTime(ticksInSecs) {
    var ticks = ticksInSecs;
    var hh = Math.floor(ticks / 3600);
    var mm = Math.floor((ticks % 3600) / 60);
    var ss = ticks % 60;

    alert( pad(hh, 2) + ":" + pad(mm, 2) + ":" + pad(ss, 2) );
}

function pad(n, width) {
    var n = n + '';
    return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;
}

请参阅this answer了解如何用JS中的前导零填充数字(上面的方法来自此答案)。

答案 1 :(得分:4)

这是一个老问题,但我对任何答案都不满意。

这里有3个问题:

  • 将刻度尺寸转换为秒
  • 从持续时间(秒)中提取小时,分钟和秒钟
  • 将数字格式设置为2位数

第1部分 - Ticks

媒体come in many durations的刻度尺寸,因此需要做出一些假设才能回答这个问题。

由于所需的答案是以秒,分和小时为单位,因此第一步是将“tick”值转换为秒。

 seconds = ticks / tickspersecond

例如,如果刻度以毫秒为单位,那么转换将为

 seconds = ticks / 1000

第2部分 - 提取小时,分钟和第二

  • hour = seconds / secondsperhour => hour = seconds / 3600
  • minute = seconds / secondsperminute modulus minutesperhour => minute = (seconds / 60) % 60)
  • second = seconds modulus secondsperminute => second = seconds % 60

第3部分 - 格式化

  • 有很多方法可以在数字上格式化前导零,这个方法将使用一个特定于此示例的简单函数(最多2位数)。

e.g。

function pad2(number){
   number = '0' + number;
   return number.substr(number.length - 2);
}

注意:由于浮点错误,您需要将Math.floor应用于小时和分钟值。如果您想缩短主要代码,可以将Math.floor放入pad2函数。

最终答案是:

// Assume milliseconds for now
var seconds = ticks / 1000; 
var hour = Math.floor(seconds / 3600);
var minute = Math.floor((seconds / 60) % 60);
var second = seconds % 60;

var result = pad2(hour) + ':' + pad2(minute) + ':' + pad2(second)

注意:为了演示,我在小时显示中添加了% 24modulus hoursperday),因为自1971年以来的小时数是一个“大”数字 - 因此不会格式化为2位小数: )

JSfiddle演示: https://jsfiddle.net/TrueBlueAussie/x2s77gzu/

或者如果您想将Math.floor放入pad2 https://jsfiddle.net/TrueBlueAussie/x2s77gzu/1/

答案 2 :(得分:2)

假设刻度是javascript格式(自1970年1月1日午夜起的毫秒):

var date = ticks.toISOString(); // gives e.g. 2015-10-06T16:34:23.062Z
var time = date.substring(11,19);  // 16:34:23

http://www.w3schools.com/jsref/jsref_toisostring.asp

编辑: enter image description here