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

标签 javascript date timestamp

给定“3:00 AM”或“7:00 PM”,是否有内置函数(例如日期)供我将它们转换为毫秒?凌晨 3:00 将以毫秒为单位表示 3 小时,而下午 7:00 以毫秒表示为 19 小时。

最佳答案

我认为没有任何内置函数可以实现此目的,但是实现您想要的功能并不复杂。

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 + 分钟 * 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;
}

关于javascript - 如何使用 javascript 将人类可读的小时数转换为毫秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16430220/

相关文章:

javascript - 一次批量保存多个模型

javascript - 拆分字符串,其中包括(/和 : ) into an array in Javascript

mysql - 尝试解决MySQL选择查询中的日期条件

java - SimpleDateFormat 解析 strftime 生成的日期时出现问题

javascript - 通过 javascript api 调用(不是节点)获取 Stripe 客户信息,如何?

javascript - 在 javascript 中使用反射来获取失败时测试函数的名称

javascript - 日期代码在 JS 中不起作用

php - 时间如何储存

postgresql - 无法从时间戳 Postgres 中提取时间

javascript - 扩展存储在变量中的函数