我正在寻求确认这是否是真正的文档和/或 Javascript 的 Date.parse 方法的实现错误。
我所指的文档位于https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse他们说“如果您不指定时区,则假定为当地时区。”
但下面的代码显示,尽管没有指定时区,但本地时间是not如果传递给 Date.parse 的字符串以 4 位年份表示形式开头,并且以破折号分隔,则假设(而是应用我的时区偏移量)。
var euroStyleDate = '2011-10-04';
var amerStyleDate = '10/04/2011';
var euroStyleParsed = Date.parse(euroStyleDate);
var amerStyleParsed = Date.parse(amerStyleDate);
console.log(euroStyleParsed); //1317686400000
console.log(amerStyleParsed); //1317700800000
console.log(new Date(euroStyleParsed));
//Date {Mon Oct 03 2011 20:00:00 GMT-0400 (Eastern Daylight Time)}
console.log(new Date(amerStyleParsed));
//Date {Tue Oct 04 2011 00:00:00 GMT-0400 (Eastern Daylight Time)}
甚至可能还有其他情况,如果我错了,我确信我不是第一个发现这一点的人。因此,除了确认之外,如果有人知道相关链接,我肯定希望获得有关此问题的更深入的信息。
我在 FF3、Windows 版 Chrome 中遇到了这种情况,当然只是为了特殊,IE8 似乎甚至无法在 2011 年 10 月 4 日执行转换:我只是在我的应用程序中得到一个空字符串
预先感谢您提供任何进一步的见解或资源。
我也遇到了这个概念。对于任何像我一样在谷歌上搜索“Javascript 日期破折号斜线”的人来说,这是我能想到的关于这里发生的事情的最清晰的演示。
简而言之,斜杠表示本地时区,破折号表示UTC。其他答案有关于原因的解释。
<script type="text/javascript">
var
testB = new Date("2012/02/09"),
testC = new Date("2012-02-09");
alert(testB.toString());
alert(testC.toString());
alert(testC.toUTCString());
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)