簡體   English   中英

如何使用JavaScript將人類可讀的小時數轉換為毫秒?

[英]How do I convert human readable hours into milliseconds using javascript?

在“ 3:00 AM”或“ 7:00 PM”的情況下,是否有內置函數 (如Date)可以將它們轉換為毫秒? 3:00 AM將是3個小時(以毫秒為單位),而7:00 PM將是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 + 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM