将12小时hh:mm AM/PM转换为24小时hh:mm

Row*_* Po 48 javascript jquery

有没有简单的方法将12小时hh:mm AM/PM转换为24小时hh:mm使用jquery?

注意:不使用其他库.

我有一个var time = $("#starttime").val()返回hh:mm AM/PM.

dev*_*l69 73

试试这个

var time = $("#starttime").val();
var hours = Number(time.match(/^(\d+)/)[1]);
var minutes = Number(time.match(/:(\d+)/)[1]);
var AMPM = time.match(/\s(.*)$/)[1];
if(AMPM == "PM" && hours<12) hours = hours+12;
if(AMPM == "AM" && hours==12) hours = hours-12;
var sHours = hours.toString();
var sMinutes = minutes.toString();
if(hours<10) sHours = "0" + sHours;
if(minutes<10) sMinutes = "0" + sMinutes;
alert(sHours + ":" + sMinutes);
Run Code Online (Sandbox Code Playgroud)

  • OP 特别要求 hh:mm XX 格式,所以晚上 10 点应该是晚上 10:00,它会起作用 (4认同)
  • `if(AMPM == "AM" &amp;&amp; hours==12) hours = 0; 我猜更直接 (3认同)
  • 例如晚上10点失败 (2认同)

Krz*_*ski 38

这个问题需要更新的答案:)

const convertTime12to24 = (time12h) => {
  const [time, modifier] = time12h.split(' ');

  let [hours, minutes] = time.split(':');

  if (hours === '12') {
    hours = '00';
  }

  if (modifier === 'PM') {
    hours = parseInt(hours, 10) + 12;
  }

  return `${hours}:${minutes}`;
}

console.log(convertTime12to24('01:02 PM'));
console.log(convertTime12to24('05:06 PM'));
console.log(convertTime12to24('12:00 PM'));
console.log(convertTime12to24('12:00 AM'));
Run Code Online (Sandbox Code Playgroud)

  • 对于 12:00 AM 示例,代码是错误的:修复 if (hours === '12' &amp;&amp; modifier === 'PM') { hours = '00'; } , PM = 下午 (3认同)
  • @snow 也许答案已更改,但现在它给出 00:00 表示上午 12 点,所以它似乎工作没有问题 (2认同)

Ste*_*ber 19

我必须做类似的事情,但我正在生成一个Date对象,所以我最终创建了这样的函数:

function convertTo24Hour(time) {
    var hours = parseInt(time.substr(0, 2));
    if(time.indexOf('am') != -1 && hours == 12) {
        time = time.replace('12', '0');
    }
    if(time.indexOf('pm')  != -1 && hours < 12) {
        time = time.replace(hours, (hours + 12));
    }
    return time.replace(/(am|pm)/, '');
}
Run Code Online (Sandbox Code Playgroud)

我觉得这看起来容易一些.您以h:mm am/pm格式提供字符串.

    var time = convertTo24Hour($("#starttime").val().toLowerCase());
    var date = new Date($("#startday").val() + ' ' + time);
Run Code Online (Sandbox Code Playgroud)

例子:

        $("#startday").val('7/10/2013');

        $("#starttime").val('12:00am');
        new Date($("#startday").val() + ' ' + convertTo24Hour($("#starttime").val().toLowerCase()));
        Wed Jul 10 2013 00:00:00 GMT-0700 (PDT)

        $("#starttime").val('12:00pm');
        new Date($("#startday").val() + ' ' + convertTo24Hour($("#starttime").val().toLowerCase()));
        Wed Jul 10 2013 12:00:00 GMT-0700 (PDT)

        $("#starttime").val('1:00am');
        new Date($("#startday").val() + ' ' + convertTo24Hour($("#starttime").val().toLowerCase()));
        Wed Jul 10 2013 01:00:00 GMT-0700 (PDT)

        $("#starttime").val('12:12am');
        new Date($("#startday").val() + ' ' + convertTo24Hour($("#starttime").val().toLowerCase()));
        Wed Jul 10 2013 00:12:00 GMT-0700 (PDT)

        $("#starttime").val('3:12am');
        new Date($("#startday").val() + ' ' + convertTo24Hour($("#starttime").val().toLowerCase()));
        Wed Jul 10 2013 03:12:00 GMT-0700 (PDT)

        $("#starttime").val('9:12pm');
        new Date($("#startday").val() + ' ' + convertTo24Hour($("#starttime").val().toLowerCase()));
        Wed Jul 10 2013 21:12:00 GMT-0700 (PDT)
Run Code Online (Sandbox Code Playgroud)


dja*_*aut 11

这里我的解决方案包括秒:

function convert_to_24h(time_str) {
    // Convert a string like 10:05:23 PM to 24h format, returns like [22,5,23]
    var time = time_str.match(/(\d+):(\d+):(\d+) (\w)/);
    var hours = Number(time[1]);
    var minutes = Number(time[2]);
    var seconds = Number(time[3]);
    var meridian = time[4].toLowerCase();

    if (meridian == 'p' && hours < 12) {
      hours += 12;
    }
    else if (meridian == 'a' && hours == 12) {
      hours -= 12;
    }
    return [hours, minutes, seconds];
  };
Run Code Online (Sandbox Code Playgroud)


Bim*_*Das 9

这将有助于:

 function getTwentyFourHourTime(amPmString) { 
        var d = new Date("1/1/2013 " + amPmString); 
        return d.getHours() + ':' + d.getMinutes(); 
    }
Run Code Online (Sandbox Code Playgroud)

示例:

getTwentyFourHourTime("8:45 PM"); // "20:45"
getTwentyFourHourTime("8:45 AM"); // "8:45"
Run Code Online (Sandbox Code Playgroud)

更新: 注意:"时间"和"上午/下午"之间应该有一个时间段空格.


小智 6

function timeConversion(s) {
  var time = s.toLowerCase().split(':');
  var hours = parseInt(time[0]);
  var _ampm = time[2];
  if (_ampm.indexOf('am') != -1 && hours == 12) {
    time[0] = '00';
  }
  if (_ampm.indexOf('pm')  != -1 && hours < 12) {
    time[0] = hours + 12;
  }
  return time.join(':').replace(/(am|pm)/, '');
}
Run Code Online (Sandbox Code Playgroud)

使用字符串参数调用该函数:

timeConversion('17:05:45AM')
Run Code Online (Sandbox Code Playgroud)

或者

timeConversion('07:05:45PM')
Run Code Online (Sandbox Code Playgroud)