【问题标题】:Javascript new Date() changed in firefox?Firefox 中的 Javascript new Date() 更改了吗?
【发布时间】:2015-04-13 20:24:04
【问题描述】:

所以我想知道 javascript 函数 Date() 最近是否针对 Firefox 甚至其他浏览器进行了更改。

起初我会得到这样的日期输出:Mon Apr 13 2015 22:18:08 GMT+0200 (West-Europa (zomertijd))

但现在它输出的是这样的:2015-04-13T20:15:18.322Z

我有一个脚本,它依赖于第一种格式,所以在我的代码没有任何变化的情况下它崩溃了。这就是为什么我开始调查并发现这是问题所在。

我想知道这是怎么回事。 (我不是要格式化解决方案,只是想知道为什么会这样格式化)

更新 1:认为添加我测试的浏览器的版本号可能会很有用(所有结果都相同)。

  • Firefox 开发者版本:39.0a2 (2015-04-07)
  • 冰鼠 31.4.0
  • 火狐 37.0.1

更新 2:代码示例:

new Date();
-- output -- Date 2015-04-13T20:57:39.622Z

原来这是UTCZulu time 格式。所以现在的问题是:为什么它输出 UTC 日期,而它以前没有这样做。

【问题讨论】:

  • 语言规范至少在这方面没有改变。但是,没有指定使用的确切格式。这只是一个“String representing the current time (UTC)”。
  • 可能测试过的计算机的区域设置?
  • @BramDriesen 控制台将有自己的行为来显示对象。这不能保证在浏览器之间保持一致。尝试指定如何将其转换为字符串 -- new Date().toString()new Date().toISOString() 等。
  • @BramDriesen 默认格式主要由实现决定,因此随时可以修改。如果您需要结果保持一致,请使用提供特定格式的方法——例如toISOString().
  • 只有开发 Firefox 或 Mozilla 的其他产品的开发人员才能回答您的问题,但我希望这与在 Date 原型中添加 toJSON() 有关。输出的值与您在控制台中看到的值相同。

标签: javascript date firefox iceweasel


【解决方案1】:

new Date() 返回一个日期对象。 Firefox 中的控制台可帮助您作为开发人员进行调试,而 Mozilla 可能已经更改了控制台中对象的表示。也许他们首先只是显示了对象所代表的日期,现在他们显示了您可以探索的对象的表示(有一个三角形 ▶,您可以单击它展开表示并显示对象的更多属性)。

这对您的程序的行为没有影响。当您在页面上输出日期时,您不会直接打印对象,而是将其转换为字符串,例如 new Date().toString()。这种行为不会无缘无故地改变。

【讨论】:

  • 我想我会选择这个作为答案,因为它是有道理的。还是很奇怪,突然变了。
  • 它突然变了并不奇怪。 Firefox 的开发人员工具会定期更新,以改进开发人员的工作流程。该更改不会破坏任何现有程序,因为程序不在开发人员工具中运行。开发者工具实际上只是为了帮助开发者调试他们的程序,如果他们改进了这些工具,看起来可能会有所不同,但这并不意味着你的代码做了不同的事情。
  • 它确实为我带来了一些障碍,因为我必须在客户端运行脚本并且它依赖于第一种日期格式。但是,是的,一个简单的 tostring 就可以了;)
  • 我认为您可能会将开发人员控制台更改误认为是您拥有的不同错误。如果您显示损坏的源代码,也许我可以告诉您发生了什么。
  • 问题是,我的代码没有任何改变。它上周工作,当我本周尝试时它没有工作,没有人改变代码中的东西。所以它可能会使用开发控制台进行更新。现在一切都整理好了;)
猜你喜欢
  • 1970-01-01
  • 2015-04-09
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多