Как конвертировать время из 24-часового формата в 12-часовой формат с помощью JavaScript? - PullRequest
6 голосов
/ 29 февраля 2012

Функция возвращает время в 24-часовом формате.

function fomartTimeShow(h) {
    return h < 10 ? "0" + h + ":00" : h + ":00";
}

возвращает время в 24-часовом формате.Я хочу, чтобы время было конвертировано в 12-часовой формат.
Любая помощь будет принята с благодарностью.
Спасибо.

Ответы [ 5 ]

13 голосов
/ 29 февраля 2012

Просто используйте модуль 12:

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

Модуль (%) означает делить и брать остаток. Например, 17/12 = 1 с остатком 5. Таким образом, результат 17% 12 равен 5. А час 17 - это час 5 через 12 часов.

Но обратите внимание, что эта функция не завершена, поскольку она не работает в течение часа 0 (или часа 12). Чтобы исправить это, вы должны добавить еще одну проверку для этого:

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

Также обратите внимание, что вы можете легко добавить меридиан, посмотрев, меньше ли час (12 часов утра) или равен / больше (часов вечера):

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');
}

Примечание. Все вышеперечисленное предполагает, что параметром этой функции является целое число от 0 до 23.

2 голосов
/ 29 февраля 2012

Вы можете попробовать что-то вроде следующего:

function fomartTimeShow(h) { 
    var ampm = "am"
    if (h >= 12)
        ampm = "pm"
    h = h % 12;
    if (h == 0)
     h = 12;
    return h ":00" + ampm; 
}
1 голос
/ 01 октября 2018

В случае, если вы получаете время, подобное этому "16:26", "12:50", "05:23" и т. Д. Затем вы можете легко преобразовать их в 12-часовой формат, например "4:26 PM", "12:50 PM", "05:23 AM" и т. Д. С AM / PM через эту функцию.

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);
}
1 голос
/ 29 февраля 2012
function fomartTimeShow(h) {
    var s = (h % 24 < 12) ? "am" : "pm", h = h % 12 || 12;
    return (h < 10 ? "0" + h : h)  + ":00" + " " + s;
}
0 голосов
/ 11 марта 2015

Я почти уверен, что это будет работать в качестве еще более сжатой формульной версии ответа Бена Ли, в том числе для случаев h = 0 и h = 12:

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

или включительно утра / вечера:

function fomartTimeShow(h_24) {
    var h = ((h_24 + 11) % 12)+1;
    return (h < 10 ? '0' : '') + h + ':00' + (h_24 < 12 ? 'am' : 'pm');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...