Date(dateString)在FF中返回无效日期

时间:2010-07-18 06:35:41

标签: javascript html javascript-events

该页面在Chrome中工作正常,但我在FF中有一个小错误,在IE中有一个不同的问题。非常感谢对这些问题中的任何一个提供帮助。由于我在FF错误中被遗忘的时间最长,我将从那个开始:

以下是代码:http://truxmapper.appspot.com/sched.html

日期选择器使用“07-08-2010 23:28”格式选择日期。现在,我需要将此时间作为参数传递给我的servlet,这需要时间表示为long。这在chrome中不是问题。 Date对象接受上面给出的格式的字符串,但是当我尝试在用FF中的字符串实例化的日期上使用getTime()时,它返回NaN。所以我在我链接到的页面上所做的是稍微处理,要求用户重新输入日期,如果它读为NaN。这显然甚至不是一个bandaid解决方案,因为即使你重新输入日期仍然会读取NaN。我需要知道为什么Date函数不会使用你在FF中的输入文本字段中看到的字符串进行实例化。

在IE中,由于某种原因,它告诉我sTime未定义。

谢谢!

2 个答案:

答案 0 :(得分:5)

该日期格式含糊不清。试试yyyy-mm-dd代替mm-dd-yyyy或dd-mm-yyyy。

答案 1 :(得分:3)

<德尔>尝试

new Date(Date(dateString)).getTime()

(感觉就像一个丑陋的解决方法......)

编辑:这会产生错误的结果。


Javascript中使用的日期格式应为YYYY MM DD HH:mm:ss格式。您可以使用

将格式转换为此表单
// dateString = "07-08-2010 23:28";
dateString = dateString.replace(/(\d+) (\d+) (\d+)/, '$3-$1-$2');

但正如评论中所提到的,在ECMAScript 5标准之前,Javascript没有使用标准的日期格式。最好直接解析dateString:

m = dateString.match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/)
date = new Date(+m[3], m[1]-1, +m[2], +m[4], +m[5]); // Note: January = 0.