关于jquery:在javascript中将AM/PM时间转换为24小时时间的简单方法是什么?

What's a simple way to convert between an am/pm time to 24 hour time in javascript

我一直在玩jquery,我遇到了一个时间问题。我有三个时间输入选择框,一个用于小时,一个用于分钟,一个用于子午线。我需要将这段时间转换为24小时字符串格式,然后将其粘贴到隐藏的输入中。

1
2
3
4
5
6
var time ="";
time += $("#EventCloseTimeHour option:selected").text();
time +=":" + $("#EventCloseTimeMin option:selected").text() +":00";
time +="" + $("#EventCloseTimeMeridian option:selected").text();

$("#ConditionValue").val(time);

这给了我"下午1:30:00",我需要"13:30:00"。有什么快速的javascript时间提示吗?


TJ111建议示例:

1
2
3
4
5
6
7
8
9
10
11
$("#ConditionValue").val(
    (
        new Date(
           "01/01/2000" +
            $("#EventCloseTimeHour option:selected").text() +
            $("#EventCloseTimeMin option:selected").text() +":00" +
           "" +
            $("#EventCloseTimeMeridian option:selected").text()
        )
    ).toTimeString().slice(0,8))
;

或者你可以使用:

1
2
hour = hour %12 + (meridian ==="AM"? 0 : 12);
hour = hour < 10 ?"0" + hour : hour;


1
2
3
4
5
var time ="";
var hour = Number($("#EventCloseTimeHour option:selected").text())%12 + ($("#EventCloseTimeMeridian option:selected").text() == 'PM'?12:0)) ;


time +=("00"+String(hour)).slice(-2)+":"+ $("#EventCloseTimeMin option:selected").text();

这个解决方案的关键是使用条件运算符"a"?B:C,意思是"如果A那么B其他C"


您应该研究本机的javascript日期对象方法。


只需添加一个简单的JS答案,下面将根据初始字符串的长度格式化时间。如果h:mm返回h h:mm,如果h:mm:ss返回h h:mm:ss。

如果始终需要hh:mm:s s,则很容易添加初始字符串中不存在的默认秒数":00"。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Change time in h:mm:ss ap to  HH:mm:ss time
// If time missing seconds, returns HH:mm
function timeToHHmm(time) {
  var nums = time.match(/\d+/g);
  var am   = /am/i.test(time);
  nums[0] = ('0' + ((nums[0]%12) + (am? 0 : 12))).slice(-2);
  // If HH:mm:ss required, use following line instead of last
  // return nums.join(':') + (nums.length == 2? ':00' : '');
  return nums.join(':');
}

// Some tests
['2:45am',     // hh:mm only
 '5:15:45pm',  // hh:mm:ss
 '5:15:45 pm', // space before am/pm
 '05:15:45 pm',// leading zero on hour
 '12:02am',
 '12:02 pm',
 '12:02:00am'
 ].forEach(function(time) {
  console.log(time + ' => ' + timeToHHmm(time));
});


我有几个人的答案。

1
2
3
4
5
6
7
var time ="";
var hour = Number($("#EventCloseTimeHour option:selected").text());
if($("#EventCloseTimeMeridian option:selected").text() == 'PM'){
    hour = String((hour%12) + 12);
}
hour = hour < 10 ?"0" + hour : hour;
time +=hour+":"+ $("#EventCloseTimeMin option:selected").text() +":00";