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