Javascript Date.parse帮助

时间:2010-07-22 16:09:11

标签: javascript internet-explorer datetime parsing

我正在使用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>

它现在有效。

3 个答案:

答案 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); }