如何使用javascript将时间从24小时格式转换为12小时格式?

如何使用javascript将时间从24小时格式转换为12小时格式?,javascript,time,Javascript,Time,该函数以24小时格式返回时间。 function fomartTimeShow(h) { return h < 10 ? "0" + h + ":00" : h + ":00"; } 函数fomartTimeShow(h){ 返回h

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

function fomartTimeShow(h) {
    return h < 10 ? "0" + h + ":00" : h + ":00";
}
函数fomartTimeShow(h){
返回h<10?“0”+h+“:00”:h+“:00”;
}
以24小时格式返回时间。我希望将时间转换为12小时格式。
任何帮助都将不胜感激。
谢谢。

只需使用模数12:

function formatTimeShow(h_24) {
    var h = h_24 % 12;
    return (h < 10 ? '0' : '') + h + ':00';
}
还请注意,您可以通过查看小时数是否小于12(am)或等于/大于12(pm),轻松添加子午线:

函数格式时间显示(h_24){
var h=h_24%12;
如果(h==0)h=12;
返回(h<10?'0':'')+h+':00'+(h_24<12?'am':'pm');
}

注意:以上所有操作都假设此函数的参数为0到23之间的整数。

您可以尝试以下操作:

function fomartTimeShow(h) { 
    var ampm = "am"
    if (h >= 12)
        ampm = "pm"
    h = h % 12;
    if (h == 0)
     h = 12;
    return h ":00" + ampm; 
}
函数fomartTimeShow(h){
var s=(h%24<12)?“am”:“pm”,h=h%12 | | 12;
返回(h<10?+0”+h:h)+“:00”+”+s;
}

我确信这将是Ben Lee答案的更简洁的公式化版本,包括h=0和h=12的情况:

function fomartTimeShow(h_24) {
    var h = ((h_24 + 11) % 12)+1;
    return (h < 10 ? '0' : '') + h + ':00';
}
功能预演(h_24){
var h=((h_24+11)%12)+1;
返回值(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');
}
功能预演(h_24){
var h=((h_24+11)%12)+1;
返回(h<10?'0':'')+h+':00'+(h_24<12?'am':'pm');
}

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

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

还有一个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;
}

那么
h
只是一个介于0和23之间的整数?你尝试过什么?如果你做了大量的日期/时间解析,那么你可能会感兴趣去看看。这在午夜或中午都不起作用。它将显示这些的“00:00am”和“00:00pm”。您应该检查值是否为“0”,并将其替换为“12”。在
h=h%12之后
h
永远不会是
=12
。谢谢Ben Lee和M42,你们都是对的。我修改了代码以反映这一点。
function fomartTimeShow(h_24) {
    var h = ((h_24 + 11) % 12)+1;
    return (h < 10 ? '0' : '') + h + ':00' + (h_24 < 12 ? '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);
}
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;
}