什么是在javascript中将上午/下午时间转换为24小时时间的简单方法

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

var time = ""; time += $("#EventCloseTimeHour option:selected").text(); time += ":" + $("#EventCloseTimeMin option:selected").text() + ":00"; time += " " + $("#EventCloseTimeMeridian option:selected").text(); $("#ConditionValue").val(time); 

这给了我“1:30:00 pm”,我需要“13:30:00”。 任何快速的javascript时间提示?

tj111建议示例:

 $("#ConditionValue").val( ( new Date( "01/01/2000 " + $("#EventCloseTimeHour option:selected").text() + $("#EventCloseTimeMin option:selected").text() + ":00" + " " + $("#EventCloseTimeMeridian option:selected").text() ) ).toTimeString().slice(0,8)) ; 

或者您可以使用:

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

您应该查看本机JavaScript Date Object方法。

 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”,它转换为“if a then b else c”

我得到了一些人的答案。

 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"; 

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

如果总是需要HH:mm:ss,如果初始字符串中不存在,则添加默认秒数“:00”很简单。

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