Kre*_*ker 5 javascript firefox google-chrome date
奇怪的是,在不同的浏览器中为新的Date()产生不同的结果.
在Chrome 45.0.2454.101 m中:
new Date(2015,9,1)
Thu Oct 01 2015 00:00:00 GMT+0200 (W. Europe Daylight Time)
Run Code Online (Sandbox Code Playgroud)
在Firefox 40.0.3中(默认检查器/控制台)
new Date(2015,9,1)
Date 2015-09-30T22:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
其他信息
如果我在Firefox中使用FIREBUG扩展控制台进行尝试,那么就像Chrome一样.发生了什么?似乎Firefox没有计算偏移量,实际上它比正确日期落后2小时.我在其他工作站上进行了测试,所有人似乎都有这个"bug".
如果您不想包含时区偏移量,您可以使用 Date.UTC
注意:当 Date 作为具有多个参数的构造函数被调用时,指定的参数代表本地时间。如果需要 UTC,请使用具有相同参数的 new Date(Date.UTC(...))。
~ MDN
Firefox 开发控制台的输出:
> new Date(2015,9,1)
Date 2015-09-30T22:00:00.000Z // reproduces your problem, my local time is GMT+0200
> new Date(Date.UTC(2015,9,1))
Date 2015-10-01T00:00:00.000Z // UTC time
Run Code Online (Sandbox Code Playgroud)
但是,00:00:00 GMT+0200和22:00:00.000Z只是在 Date 的字符串表示中表示时区偏移的不同方式。不同之处在于打印到控制台时使用的方法:大多数浏览器使用.toString()Firefox 使用.toISOString(). (已编辑;之前声明toString方法实现不同,但这是不正确的)。
在 Chrome ( Thu Oct 01 2015 00:00:00 GMT+0200) 和 Firefox ( Date 2015-09-30T22:00:00.000Z) 方法中,like.getDate()和.getMonth()return 相同的值(分别是1和9)。该Date对象是相同的。
这只是调试控制台的行为。您显示的两个日期值都是相同的,并且是正确的值。您在 Chrome 中仅看到当地时间,而 Firefox 选择在调试控制台中显示 UTC 时间。
更准确地说,Chrome、IE 和大多数其他浏览器只是调用.toString()该对象,而 Firefox 则调用.toISOString().
请注意,Firefox 有一个错误,我们显示了错误的时区名称(标准而不是夏令时),但您可以看到调试器值与 ISO8601 UTC 值匹配。
| 归档时间: |
|
| 查看次数: |
3137 次 |
| 最近记录: |