【问题标题】:How to convert time from 24 hour format to 12 hour format using javascript?如何使用 javascript 将时间从 24 小时格式转换为 12 小时格式?
【发布时间】:2012-02-29 10:53:22
【问题描述】:

该函数以 24 小时格式返回时间。

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

以 24 小时格式返回时间。我希望将时间转换为 12 小时格式。
任何帮助将不胜感激。
谢谢。

【问题讨论】:

  • 所以h 只是0到23之间的一个整数?你试过什么?
  • 如果你做了很多日期/时间解析,看看Datejs可能会很有趣。

标签: javascript time


【解决方案1】:

只需使用模数 12:

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

Modulus (%) 表示除法取余。例如 17 / 12 = 1 余数为 5。所以 17 % 12 的结果是 5。而第 17 小时是 12 小时内的第 5 小时。

但请注意,此功能不完整,因为它在第 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】:

    您可以尝试以下方法:

    function fomartTimeShow(h) { 
        var ampm = "am"
        if (h >= 12)
            ampm = "pm"
        h = h % 12;
        if (h == 0)
         h = 12;
        return h ":00" + ampm; 
    }
    

    【讨论】:

    • 这不适用于午夜或中午。它将为这些显示“00:00am”和“00:00pm”。您应该检查该值是否为“0”并将其替换为“12”。
    • 在h = h % 12; 之后,h 永远不会是&gt;= 12。
    • 感谢 Ben Lee 和 M42,你们都说得对。我已经修改了反映这一点的代码。
    【解决方案3】:
    function fomartTimeShow(h) {
        var s = (h % 24 < 12) ? "am" : "pm", h = h % 12 || 12;
        return (h < 10 ? "0" + h : h)  + ":00" + " " + s;
    }
    

    【讨论】:

      【解决方案4】:

      如果您有这样的时间“16:26”、“12:50”、“05:23”等。 然后,您可以通过此功能轻松地将它们转换为 12 小时格式,如 “4:26 PM”、“12:50 PM”、“05:23 AM” 等。

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

      【讨论】:

        【解决方案5】:

        我很确定这将作为 Ben Lee 答案的更简洁的公式化版本,包括 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');
        }
        

        【讨论】:

          【解决方案6】:

          另一个 Javascript 函数将 24 小时转换为 12 小时,但与此问题的所有其他答案不同,这个函数易于阅读。

          function timeTo12(time){
          
            var parts = time.split(':');
            var hours = parseInt(parts[0]);
            var minutes = parts[1];
          
            if(hours >= 12){
              var newhours = parseInt(hours) - 12;
              var meridiem = "pm";
            }else{
              var newhours = parseInt(hours);
              var meridiem = "am";
            }
          
            if(newhours == 0) newhours = "12";
            var newtime = newhours + ":" + minutes + " " + meridiem;
          
            return newtime;
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-12-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-08-15
            • 2013-07-14
            • 2011-11-17
            相关资源
            最近更新 更多