Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript将人类可读的小时转换为毫秒?_Javascript_Date_Timestamp - Fatal编程技术网

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

如何使用javascript将人类可读的小时转换为毫秒?,javascript,date,timestamp,Javascript,Date,Timestamp,给定“3:00am”或“7:00pm”,是否有内置函数(如日期)可供我将其转换为毫秒?凌晨3:00将是3小时(以毫秒计),而下午7:00将是19小时(以毫秒计)。我认为这没有任何内置功能,但是实现您想要的并不复杂 首先,创建一个经过0毫秒的日期: var d = new Date(0); console.log(d.getTime()); //10800000 解析时间字符串并相应地设置日期的小时数: var t = timeString.match(/(\d{1,2}):(\d{2})

给定“3:00am”或“7:00pm”,是否有内置函数(如日期)可供我将其转换为毫秒?凌晨3:00将是3小时(以毫秒计),而下午7:00将是19小时(以毫秒计)。

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

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

var d = new Date(0);
console.log(d.getTime()); //10800000
解析时间字符串并相应地设置日期的小时数:

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
函数获取毫秒数:

var d = new Date(0);
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


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

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

var d = new Date(0);
console.log(d.getTime()); //10800000
解析时间字符串并相应地设置日期的小时数:

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
函数获取毫秒数:

var d = new Date(0);
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


我可能错了,但这一点没有在:@BrianLangbecker中讨论,不完全相同,因为当前的问题涉及解析时间字符串。它还试图计算特定时间内经过的毫秒数,而不是从午夜起经过的当前时间。我可能错了,但这一点没有在:@BrianLangbecker中介绍,不完全相同,因为当前问题涉及到解析时间字符串。它还试图计算特定时间内经过的毫秒数,而不是从午夜起经过的当前时间。在
12:00 PM
(应该是12小时,但将计为24小时)内不起作用。@ColinDeClue,感谢您的反馈,我已经修复了它。感谢您的回答,@plalx。我猜这样的函数不是内置的,因为AM和PM是英国的东西。不适用于
12:00 PM
(应该是12小时,但会计为24小时)。@ColinDeClue,谢谢你的反馈,我修复了它。谢谢你的回答,@plalx。我猜像这样的函数不是内置的,因为AM和PM是英国的东西。