在javascript中将时间字符串转换为时间值

时间:2017-10-05 17:09:40

标签: javascript

我有一个看起来像“01:12:33”的字符串,它是HH:MM:SS格式。如何将其转换为JS中的时间值?

我尝试了新的Date()构造函数并将year和day值设置为0,然后执行getTime(),但我没有任何幸运。

3 个答案:

答案 0 :(得分:2)

使用日期前缀:

var hms = "01:12:33";
var target = new Date("1970-01-01 " + hms);
console.log(target);

target.getTime()将为您提供自当天开始以来的毫秒数;

或者,如果您需要它是今天的日期:

var now = new Date();
var nowDateTime = now.toISOString();
var nowDate = nowDateTime.split('T')[0];
var hms = '01:12:33';
var target = new Date(nowDate + hms);
console.log(target);

target.getTime()将为您提供自纪元以来的毫秒数。

答案 1 :(得分:1)

要执行此操作,应将HH:MM:SS格式的字符串转换为JavaScript时间。

首先,我们可以使用正则表达式(RegEx)正确提取该字符串中的值。

let timeString = "01:12:33";

使用RegEx提取值

let regExTime = /([0-9]?[0-9]):([0-9][0-9]):([0-9][0-9])/;
let regExTimeArr = regExTime.exec(timeString); // ["01:12:33", "01", "12", "33", index: 0, input: "01:12:33", groups: undefined]

将HH,MM和SS转换为毫秒

let timeHr = regExTimeArr[1] * 3600 * 1000;
let timeMin = regExTimeArr[2] * 60 * 1000;
let timeSec = regExTimeArr[3] * 1000;

let timeMs = timeHr + timeMin + timeSec; //4353000 -- this is the time in milliseconds.

关于另一个时间点,必须给出参考时间。

例如

let refTimeMs = 1577833200000  //Wed, 1st January 2020, 00:00:00; 

上面的值是从纪元时间(1970年1月1日00:00:00)以来经过的毫秒数

let time = new Date (refTimeMs + timeMs); //Wed Jan 01 2020 01:12:33 GMT+0100 (West Africa Standard Time)

答案 2 :(得分:0)

您可以为您添加以下功能:

function getDateFromHours(time) {
    time = time.split(':');
    let now = new Date();
    return new Date(now.getFullYear(), now.getMonth(), now.getDate(), ...time);
}
console.log(getDateFromHours('01:12:33'));