请解释有关日期构造函数的javascript调试器输出

请解释有关日期构造函数的javascript调试器输出,javascript,internet-explorer,parsing,date,cross-browser,Javascript,Internet Explorer,Parsing,Date,Cross Browser,我试图实例化一个日期,这样代码就可以在Chrome和IE中工作(等等)。理想情况下,如果可能的话,我希望找到一个简单的语句,而不是UDF。当时间块表示为T00:00:00时,是否无法在javascript中对字符串值进行Date.parse 下面是我在VisualStudio的即时窗口中看到的内容caldate包含后端数据库返回的日期的字符串表示形式;将该字符串传递给Date.parse()将返回一个时间戳,1371441600000,并将该时间戳传递给Date()构造函数将同时返回Mon Ju

我试图实例化一个日期,这样代码就可以在Chrome和IE中工作(等等)。理想情况下,如果可能的话,我希望找到一个简单的语句,而不是UDF。当时间块表示为
T00:00:00
时,是否无法在javascript中对字符串值进行Date.parse

下面是我在VisualStudio的即时窗口中看到的内容
caldate
包含后端数据库返回的日期的字符串表示形式;将该字符串传递给
Date.parse()
将返回一个时间戳,
1371441600000
,并将该时间戳传递给Date()构造函数将同时返回
Mon Jun 17 00:00:00 EDT 2013
[prototype]:无效日期

?caldate
"2013-06-17T00:00:00"
?Date.parse(caldate);
1371441600000
?new Date( Date.parse(caldate) );
Mon Jun 17 00:00:00 EDT 2013
    [prototype]: Invalid Date

无效日期
正常。这正是调试器为
日期的proto对象打印的内容。我认为这是因为调试器调用proto对象上的
toString
方法,而不提供实际的
Date
实例,因此
toString
方法返回
“无效日期”

我建议你读这本书


您可以使用
new Date(caldate)
从字符串创建
Date

您是说上述内容在Chrome中有效,但在IE中无效?
new Date(caldate)
在Chrome中返回第16位,在IE中返回第17位。感谢链接。下面是一个关于日期格式浏览器兼容性的好图表:。还有这个:对于现代浏览器,您使用的字符串应该可以。您看到的16和17之间的差异可能是字符串被解释为UTC还是localtime之间的差异。也许我提供的链接可以帮助你解决问题。我会接受答案作为无效日期的解释,谢谢你提供的附加图表。