如何使用javascript将人类可读小时数转换为毫秒?

时间:2013-05-07 23:25:33

标签: javascript date timestamp

鉴于“凌晨3点”或“晚上7点”,我是否有内置功能(如日期)将这些功能转换为毫秒?凌晨3:00将是3小时(以毫秒为单位),而下午7:00将是19小时(以毫秒为单位)。

1 个答案:

答案 0 :(得分:1)

我认为没有任何内置功能,但实现你想要的并不复杂。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date

首先,创建一个0经过毫秒的日期:

var d = new Date(0);

解析你的时间字符串并相应地设置日期的小时数:

var t = timeString.match(/(\d{1,2}):(\d{2}) ([AP]M)/),
    h = parseInt(t[1], 10),
    isAm = t[3] === 'AM',
    isMidnight = h === 12 && isAm,
    isNoon = h === 12 && !isAm;

d.setUTCHours(isMidnight? 0 : h + (isAm || isNoon? 0 : 12), parseInt(t[2], 10));

使用getTime函数获取毫秒:

console.log(d.getTime()); //10800000

这是一个可重复使用的功能:

function getTimeMilliseconds(timeString) {
    var t = timeString.match(/(\d{1,2}):(\d{2}) ([AP]M)/),
        h = parseInt(t[1], 10),
        isAm = t[3] === 'AM',
        isMidnight = h === 12 && isAm,
        isNoon = h === 12 && !isAm;

    return new Date(0).setUTCHours(isMidnight? 0 : h + (isAm || isNoon? 0 : 12), parseInt(t[2], 10));
}

getTimeMilliseconds('3:00 AM');

请注意,您实际上并不需要Date对象来实现此目的,但我使用它是因为它为您做了数学运算,但您始终可以hours * 3600000 + minutes * 60000

function getTimeMilliseconds(timeString) {
    var t = timeString.match(/(\d{1,2}):(\d{2}) ([AP]M)/),
        h = parseInt(t[1], 10),
        isAm = t[3] === 'AM',
        isMidnight = h === 12 && isAm,
        isNoon = h === 12 && !isAm;

    return (isMidnight? 0 : h + (isAm || isNoon? 0 : 12)) * 3600000 + parseInt(t[2], 10) * 60000;
}