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

时间:2009-02-03 20:18:22

标签: javascript jquery time

我一直在玩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时间提示?

5 个答案:

答案 0 :(得分:8)

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;  

答案 1 :(得分:1)

您应该查看原生的JavaScript Date Object方法。

答案 2 :(得分:1)

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”

答案 3 :(得分:0)

我得到了一些人的答案。

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

答案 4 :(得分:0)

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

如果总是需要HH:mm:ss,添加&#34; 00&#34;的默认秒数很简单。如果不存在于初始字符串中。

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