【问题标题】:Converting a time string to a time value in javascript在javascript中将时间字符串转换为时间值
【发布时间】:2017-10-05 17:09:39
【问题描述】:

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

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

【问题讨论】:

标签: javascript


【解决方案1】:

用日期前缀:

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() 将为您提供自纪元以来的毫秒数。

【讨论】:

    【解决方案2】:

    为了能够做到这一点,应该将 HH:MM:SS 格式的字符串转换为 JavaScript 时间。

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

    let timeString = "01:12:33";
    

    使用正则表达式提取值

    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)
    

    【讨论】:

    • 干得好!你能解释一下括号之间的问号吗?
    • 这意味着它之前的实体(左侧)可能存在或不存在。也就是说,该实体的 1 或 0 个实例。如果您希望您的小时数在没有前导“0”的情况下读取个位数,这一点很重要。也就是说,'1',而不是 '01'。
    • 为什么要加一小时?
    【解决方案3】:

    您可以添加以下功能来为您完成这项工作:

    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'));
    

    【讨论】:

      猜你喜欢
      • 2012-08-15
      • 2013-04-10
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 2011-08-06
      • 2013-01-25
      相关资源
      最近更新 更多