JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Javascript新的Date函数中的奇怪行为大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在 JavaScript中使用字符串中的Date对象,但是我在这里看到javascript解析日期字符串非常奇怪.
> new Date("2012-01-01");
Sun Jan 01 2012 07:00:00 GMT+0700 (ICT)

> new Date("01-01-2012");
Sun Jan 01 2012 00:00:00 GMT+0700 (ICT)

> new Date("2012-01-01") == new Date("01-01-2012")
false

我使用Chrome 32,因为你可以看到他们是7小时不同.请告诉我这里发生了什么?

解决方法

@H_489_9@ 这是关于浏览器如何实现Date.parse( spec).该方法在传递给Date构造函数( spec)的字符串中被调用,并首先尝试将字符串与已知格式匹配,以确定哪些值在哪里.我希望不同的浏览器以稍微不同的方式实现该决策树,但是Chrome的实现可能假定“2012-01-01”版本是基于Zulu或GMT / UTC的 ISO-8601标准的前缀,并且包括时区(“2012-01-01T00:00:00Z-07:00”),而“01-01-2012”版本是根据您的LOCAL时区进行本地化,并不打算指定(“01 -01-2012 00:00:00“),所以7小时的差异基于ISO标准日期和本地化日期之间的7小时偏差.相反,Date.prototype.toString()( spec)应该显示本地时间,并由Date构造函数返回,这就是为什么它本地化在您的测试的两个返回值中.

spec for Date.parse:

含义如果您不使用15.9.1.15中指定的完整的ISO-8601日期,浏览器可以使其完成,或者只是给您NaN.即使这是标准,一些浏览器是不知道实际上不遵循标准,所以您可以虑通过自己解析数据并使用另一个Date构造函数(spec)来明确地指定所有参数.

大佬总结

以上是大佬教程为你收集整理的Javascript新的Date函数中的奇怪行为全部内容,希望文章能够帮你解决Javascript新的Date函数中的奇怪行为所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。