首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用javascript将人类可读的小时转换为毫秒?

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

Stack Overflow用户
提问于 2013-05-07 23:25:32
回答 1查看 1.3K关注 0票数 1

给定"3:00 AM“或"7:00 PM",是否有内置于函数(类似日期)的将这些转换为毫秒?凌晨3:00以毫秒为单位,而7:00 PM为19小时(毫秒)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-08 00:09:55

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

Objects/Date

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

代码语言:javascript
复制
var d = new Date(0);

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

代码语言:javascript
复制
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函数获取毫秒:

代码语言:javascript
复制
console.log(d.getTime()); //10800000

这里有一个可重用的函数:

代码语言:javascript
复制
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__。

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16430220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档