Chrome和Firefox之间的时间戳转换差异

时间:2013-01-26 22:48:26

标签: javascript google-chrome date firefox integer

我在处理时间戳时遇到了麻烦。我在Chrome 24.0.1312.56 m和Firefox 18.0.1控制台中调试以下完全相同的代码:

new Date(parseInt('2012'), parseInt('09') - 1, parseInt('30')).getTime()/1000

当我在 Chrome 中执行时,我得到:

1348956000

当我在 Firefox 中执行时,我得到:

1325199600

问题:这里有什么问题?

1 个答案:

答案 0 :(得分:8)

parseInt('09')

  • Chrome 24似乎返回 9
  • FireFox 18似乎将数字视为octal因此返回 0 (解析0但不解析9)

引自parseInt文档:

  

虽然ECMAScript 3不鼓励,但很多实现都解释了   数字字符串以前导0开头为八进制。
  [...]
  不再是函数parseInt的ECMAScript 5规范   允许实现处理以0字符开头的字符串   作为八进制值。
  [...]
  由于许多实现在2011年都未采用此行为,   并且由于必须支持旧浏览器,因此请始终指定基数。

解决方案:修改代码并明确指定基数参数:

new Date(parseInt('2012', 10), parseInt('09', 10) - 1, parseInt('30', 10)).getTime()/1000
// 1348945200