How to convert time from 24 hour format to 12 hour format using javascript?

后端 未结 5 1697
逝去的感伤
逝去的感伤 2021-01-03 00:55

The function returns the time in 24 hour format.

function fomartTimeShow(h) {
    return h < 10 ? \"0\" + h + \":00\" : h + \":00\";
}
相关标签:
5条回答
  • 2021-01-03 01:10

    Just use modulus 12:

    function formatTimeShow(h_24) {
        var h = h_24 % 12;
        return (h < 10 ? '0' : '') + h + ':00';
    }
    

    Modulus (%) means divide and take remainder. For example 17 / 12 = 1 with remainder 5. So the result of 17 % 12 is 5. And hour 17 is hour 5 in 12-hour time.

    But note that this function is not complete since it doesn't work for hour 0 (or hour 12). To fix it you have to add in another check for that:

    function formatTimeShow(h_24) {
        var h = h_24 % 12;
        if (h === 0) h = 12;
        return (h < 10 ? '0' : '') + h + ':00';
    }
    

    Also note that you can add a meridian easily, by seeing whether the hour is less than 12 (am) or equal to/greater (pm):

    function formatTimeShow(h_24) {
        var h = h_24 % 12;
        if (h === 0) h = 12;
        return (h < 10 ? '0' : '') + h + ':00' + (h_24 < 12 ? 'am' : 'pm');
    }
    

    Note: All of the above is assuming the parameter to this function is an integer between 0 and 23.

    0 讨论(0)
  • 2021-01-03 01:14

    I'm pretty sure this will work as an even more concise formulaic version of Ben Lee's answer, including for the h=0 and h=12 cases:

    function fomartTimeShow(h_24) {
        var h = ((h_24 + 11) % 12)+1;
        return (h < 10 ? '0' : '') + h + ':00';
    }
    

    or including am/pm:

    function fomartTimeShow(h_24) {
        var h = ((h_24 + 11) % 12)+1;
        return (h < 10 ? '0' : '') + h + ':00' + (h_24 < 12 ? 'am' : 'pm');
    }
    
    0 讨论(0)
  • 2021-01-03 01:21

    In case if you are getting time like this "16:26", "12:50", "05:23", etc. Then, you can easily convert them into 12 hour format like "4:26 PM", "12:50 PM", "05:23 AM", etc. with AM/PM through this function.

    function convertTo12Hour(oldFormatTime) {
        console.log("oldFormatTime: " + oldFormatTime);
        var oldFormatTimeArray = oldFormatTime.split(":");
    
        var HH = parseInt(oldFormatTimeArray[0]);
        var min = oldFormatTimeArray[1];
    
        var AMPM = HH >= 12 ? "PM" : "AM";
        var hours;
        if(HH == 0){
          hours = HH + 12;
        } else if (HH > 12) {
          hours = HH - 12;
        } else {
          hours = HH;
        }
        var newFormatTime = hours + ":" + min + " " + AMPM;
        console.log(newFormatTime);
    }
    
    0 讨论(0)
  • 2021-01-03 01:27

    You could try something like the following:

    function fomartTimeShow(h) { 
        var ampm = "am"
        if (h >= 12)
            ampm = "pm"
        h = h % 12;
        if (h == 0)
         h = 12;
        return h ":00" + ampm; 
    }
    
    0 讨论(0)
  • 2021-01-03 01:27
    function fomartTimeShow(h) {
        var s = (h % 24 < 12) ? "am" : "pm", h = h % 12 || 12;
        return (h < 10 ? "0" + h : h)  + ":00" + " " + s;
    }
    
    0 讨论(0)
提交回复
热议问题