0

我需要比较马拉松运动员的跑步时间,我很难比较跑步时间,因为它们采用以下格式;00:31:26、00:34:29(时:分:秒)。

理想情况下,我想将整个时间转换为分钟,以便我可以使用时间来创建图表。

如何使用 javascript 或其他方式将比赛时间转换为数字?

4

5 回答 5

2

此示例演示Array.split将字符串拆分为组件,小时、分钟和秒,这些组件保存在变量 中array。然后,它使用parseInt将组件字符串转换为整数,然后再以数学方式将其相乘并相加,以在几秒钟内为您提供一个表示形式。

var time = "01:32:29";
var array = time.split(":");
var seconds = (parseInt(array[0], 10) * 60 * 60) + (parseInt(array[1], 10) * 60) + parseInt(array[2], 10)

console.log(seconds);

jsfiddle 上

于 2013-05-06T10:36:27.870 回答
2

基本方法相同,更简洁

  '02:04:03'.split (':').reduce (function (seconds, v) {
      return +v + seconds * 60;
    }, 0) / 60;

split 创建一个数组,reduce 及其函数以秒为单位计算时间,最后除以 60 得到分钟作为浮点数。上面的结果是 124.05。

于 2013-05-06T10:53:49.257 回答
0

首先,您需要转换为秒,因为您有时间在 hh:mm:ss 中。如果您直接转换为分钟,您可能无法获得准确的时间。您需要以这种方式实现它:

示例

var hms = '03:09:56';    // your input string
var a = hms.split(':'); // split it at the colons

// minutes are worth 60 seconds. Hours are worth 60 minutes.
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 

//if you want hours
var minutes = (seconds)/60;

console.log(minutes);
于 2013-05-06T10:32:39.557 回答
0

没有图书馆,我会使用这样的东西

convertToMinutes = function(timeString) {
    var hms = timeString.split(':');
    return Math.ceil(parseInt(hms[2])/60) + parseInt(hms[1]) + parseInt(hms[0])*60
}

演示

http://jsbin.com/awiyir/1/edit

于 2013-05-06T10:33:55.243 回答
0

也可以使用内置的 Date 对象。然后您可以使用内置函数进行计算、格式化等。

由于 Date 是一个日期而不是一个简单的时间,我建议将它与 unix 时间对齐。然后 .getTime() 将获得正确的毫秒数。

var time1 = new Date ('01 01 70 00:31:26 UTC');
var time2 = new Date ('01 01 70 00:29:15 UTC');
var timediff=time1-time2;  // Gets the time diff in millisecs

这有点hackish,但效果很好。

有关 Date 对象的更多信息:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date

于 2013-05-06T10:59:02.650 回答