我有一个看起来像“01:12:33”的字符串,它是HH:MM:SS格式。如何将其转换为JS中的时间值?
我尝试了新的Date()构造函数并将year和day值设置为0,然后执行getTime(),但我没有任何幸运。
答案 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'));