我需要比较马拉松运动员的跑步时间,我很难比较跑步时间,因为它们采用以下格式;00:31:26、00:34:29(时:分:秒)。
理想情况下,我想将整个时间转换为分钟,以便我可以使用时间来创建图表。
如何使用 javascript 或其他方式将比赛时间转换为数字?
我需要比较马拉松运动员的跑步时间,我很难比较跑步时间,因为它们采用以下格式;00:31:26、00:34:29(时:分:秒)。
理想情况下,我想将整个时间转换为分钟,以便我可以使用时间来创建图表。
如何使用 javascript 或其他方式将比赛时间转换为数字?
此示例演示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);
基本方法相同,更简洁
'02:04:03'.split (':').reduce (function (seconds, v) {
return +v + seconds * 60;
}, 0) / 60;
split 创建一个数组,reduce 及其函数以秒为单位计算时间,最后除以 60 得到分钟作为浮点数。上面的结果是 124.05。
首先,您需要转换为秒,因为您有时间在 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);
没有图书馆,我会使用这样的东西
convertToMinutes = function(timeString) {
var hms = timeString.split(':');
return Math.ceil(parseInt(hms[2])/60) + parseInt(hms[1]) + parseInt(hms[0])*60
}
演示
也可以使用内置的 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