请解释这个关于日期构造函数的javascript调试器输出
我想实例化一个日期,以便代码在Chrome和IE(等)中工作。理想情况下,如果可能的话,我希望找到一个简单的声明而不是UDF。当时间块表示为T00:00:00
时,是不是可以Date.parse JavaScript中的字符串值?请解释这个关于日期构造函数的javascript调试器输出
下面是我在Visual Studio中立即窗口中的内容; caldate
包含由后端数据库返回的日期的字符串表示形式;将该字符串传递给Date.parse()
将返回时间戳1371441600000
,并将该时间戳传递给Date()构造函数返回Mon Jun 17 00:00:00 EDT 2013
和[prototype]: Invalid Date
。
?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
Invalid Date
是正常的。这正是调试器为Date
的原始对象打印的内容。我相信这是因为调试器调用原始对象上的toString
方法而不提供实际的Date
实例,因此toString
方法返回"Invalid Date"
。我建议你阅读MDN documentation on Date。
您可以使用new Date(caldate)
从字符串创建Date
。
'new Date(caldate)'在Chrome中返回第16位,在IE中返回第17位。感谢您的链接。 – Tim
时区问题。 – Tim
下面是关于日期格式的浏览器兼容性的很好的图表:http://dygraphs.com/date-formats.html。这也是:http://blog.dygraphs.com/2012/03/javascript-and-dates-what-mess.html你正在使用的字符串应该适用于现代浏览器。你所看到的16日和17日之间的区别可能是字符串被解释为UTC还是本地时间之间的区别。也许我提供的链接可以帮助你理清。 – Brandon
你是说上面的工作在Chrome中,但不是在IE中? – nnnnnn