我正在使用Javascript Date.parse()
检查开始时间是否在结束时间之后。
有问题的时间是这样的:
Date.parse("12:00pm") > Date.parse("9:30pm")
在Chrome中,这会出现错误(应该如此)
在IE中,它不正确地显示为真。
Chrome看到的值是:
Thu Jul 22 2010 12:00:00 GMT-0400 (Eastern Daylight Time)
Thu Jul 22 2010 21:30:00 GMT-0400 (Eastern Daylight Time)
IE看到的值是:
Thu Jul 22 12:00:00 EDT 2010
Thu Jul 22 09:30:00 EDT 2010
如何让IE正常工作?
好的,这只发生在IE7中。另外我看到现在IE7没有得到存储在SELECT框中的am / pm并通过以下方式检索:
var startMerid = document.getElementById("start_time_ampm").options[document.getElementById("start_time_ampm").selectedIndex].value;
我的选择是这样的:
<option>am</option>
但我改为:
<option value="am">am</option>
它现在有效。
答案 0 :(得分:0)
您在测试此版本的IE是什么版本? IE8正确地为我返回false。
答案 1 :(得分:0)
IE中Date.parse()
的文档说明如下:
如果使用24小时制,在中午12点以后指定“PM”是错误的。例如,“23:15 PM”是一个错误。
对于跨浏览器解决方案,您应该避免 parse()并手动解析时间字符串。或者,您可以使用跨浏览器库来解析日期/时间 - DateJS是一个受欢迎的。
答案 2 :(得分:0)
您不能只将时间传递给Date.parse()
,因为它需要一个日期字符串。如果您将代码中的>
翻转为<
,您会发现它仍会返回false
。这是因为Date.parse()
正在返回NaN
。
试试这个:
var a = new Date("January 1, 1970 12:00:00");
var b = new Date("January 1, 1970 21:30:00");
if (a > b) { alert(true); } else { alert(false); }
if (a < b) { alert(true); } else { alert(false); }