Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中,将am/pm时间转换为24小时时间的简单方法是什么_Javascript_Jquery_Time - Fatal编程技术网

在javascript中,将am/pm时间转换为24小时时间的简单方法是什么

在javascript中,将am/pm时间转换为24小时时间的简单方法是什么,javascript,jquery,time,Javascript,Jquery,Time,我一直在玩jquery,我遇到了时间问题。我有3个时间输入选择框,一个用于小时,一个用于分钟,还有一个用于子午线。我需要将这段时间转换为24小时字符串格式,然后将其粘贴到隐藏输入中 var time = ""; time += $("#EventCloseTimeHour option:selected").text(); time += ":" + $("#EventCloseTimeMin option:selected").text() + ":00"; time += " " + $("

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

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

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

这给了我下午1:30,我需要13:30。任何快速javascript时间提示?

您应该研究本机方法

此解决方案的关键是使用条件运算符a?b:c,它转换为if a then b else c

建议示例:

$("#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;  

我是通过几个人的回答得到的

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

//将h:mm:ss ap中的时间更改为HH:mm:ss时间 //如果时间缺少秒,则返回HH:mm 函数timeToHHmmtime{ var nums=time.match/\d+/g; var am=/am/i.testtime; nums[0]=“0”+nums[0]%12+am?0:12.2; //如果需要HH:mm:ss,请使用以下行而不是最后一行 //返回nums.join':'+nums.length==2?':00':; 返回nums.join':'; } //一些测试 ['2:45am',//hh:mm仅限 “下午5:15:45”,//hh:mm:ss “下午5:15:45”,//上午/下午之前的空格 “05:15:45 pm”,//小时数领先零 “凌晨12点02分”, “下午12:02”, “12:02:00am” ].foreachtime{ console.logtime+'=>'+timeToHHmmtime;
};有没有办法输入Meridian am/pm?如果使用Date.parse方法,它接受字符串中的am/pm,但前面需要一个完整的日期。它似乎无法使用日期解析-我一直使用无效的日期格式尝试使用Date.parse01/01/2001 12:00 pm;时间和AM/PM之间需要有一个空格,并且日期必须为格式shown@some-请不要建议使用内置解析器进行解析,它依赖于实现,而且非常容易出错,因为到目前为止我最喜欢您的解析器,但我从toTimeString中获取了无效日期,然后它将其切分为无效。这是firefox和firebug,但在chrome中也不起作用。如果你从jquerys得到正确的值,我认为date对象不会接受Meridischeck。。。如果输入无效,您将得到一个无效的输出。@有些人不建议使用内置解析器进行解析,因为它依赖于实现,并且非常容易出错。此外,它也依赖于实现,可能不会返回所需的值。请确定@RobG。你知道我在哪里可以找到时间机器的磁通电容器,这样我可以回到2009年2月吗?@RobG,我知道有,但是。。。这个问题是大约8.5年前提出的,直到大约一个月前一个机器人更新了从http到https的链接,这个问题才被提出来。我在社区维基上做了这个回答,因为它只是tj111建议的方法的一个例子。我还演示了如何在不使用date-object的情况下计算小时。因为它被接受,所以提问的人感到满意。如果这个答案让您感到困扰,请随时更新-10小时以下的时间应加零。在24小时模式下,始终有两位数字。在12:xx AM时仍然中断。你总是要用12来修改时间,然后如果是下午,你就加上12。我必须加上我最近发现了datejs,这很神奇-你应该想,如果你想为上面的一个问题包含一个完整的日期库,但是我做了很多日期数学,所以它更有用。
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";