Javascript/EcmaScript3 支持 ISO8601 日期解析吗?
您目前如何在 JavaScript 中解析 ISO8601 日期,例如 2010-02-23T23:04:48Z ?
使用下面的代码时,某些浏览器会返回 NaN(包括 Chrome),但 FF3.6+ 可以工作。
<html>
<body>
<script type="text/javascript">
var d = Date.parse("2010-02-23T23:04:48Z");
document.write(d);
</script>
</body>
</html>
您可以在这里尝试一下 http://www.w3schools.com/jsref/tryit。 asp?filename=tryjsref_parse
How are you currently parsing ISO8601 dates e.g. 2010-02-23T23:04:48Z in JavaScript?
Some browsers return NaN (including Chrome) when using the code below, FF3.6+ works though.
<html>
<body>
<script type="text/javascript">
var d = Date.parse("2010-02-23T23:04:48Z");
document.write(d);
</script>
</body>
</html>
You can try this here http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_parse
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这是一个出色的实现,它涵盖了边缘情况并回退到本机实现。 https://github.com/csnover/js-iso8601/
This is an excellent implementation which covers edge cases and falls back to native implementation. https://github.com/csnover/js-iso8601/
试试这个: http://anentropic.wordpress .com/2009/06/25/javascript-iso8601-parser-and-pretty-dates/
Try this: http://anentropic.wordpress.com/2009/06/25/javascript-iso8601-parser-and-pretty-dates/
正如其他人提到的,它不在第三版规范中。然而它在第五版规范中,我引用:
所以它应该很快就会渗透到浏览器中(IE9、Chrome 1、Firefox 4 至少是一些支持 ISO 8601 的浏览器)日期)。如果您想同时实现一个解决方案,您可能需要进行优化,以便您的脚本可以利用本机(如果可用):
As others have mentioned, it's not in the 3rd edition specification. It is in the 5th edition specification however, and I quote:
So it should be trickling into browsers soon (IE9, Chrome 1, Firefox 4 are at least some of the browsers supporting ISO 8601 dates). If you want to implement a solution in the meantime, you might want to optimize so that your script can take advantage of the native if available:
关于标题中的问题:不是本机的(正如您测试过的:))
在 ECMA-262 (3/e) 中,对
Date.parse
[15.9.4.2]< 的唯一要求/sup> 是通过.toString()
进行的往返转换,并且.toUTCString()
不会更改 Date 对象,即.toString( )
[15.9.5.2] 和.toUTCString()
[15.9.5.42] 取决于实现,那么什么格式 < code>Date.parse 可以解析完全未指定。On the question in the title: Not natively (as you've tested :) )
In ECMA-262 (3/e) the only requirement for
Date.parse
[15.9.4.2] is the round-trip conversion via.toString()
and.toUTCString()
won't change the Date object, i.e.and both
.toString()
[15.9.5.2] and.toUTCString()
[15.9.5.42] are implementation-dependent, so what formatDate.parse
can parse is totally unspecified.