给定“3:00 AM”或“7:00 PM”,是否有内置函数(如日期)让我将它们转换为毫秒?上午 3:00 将以毫秒为单位表示 3 小时,而下午 7:00 将以毫秒为单位表示 19 小时。
问问题
1232 次
1 回答
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;
}
于 2013-05-08T00:09:55.620 回答