为提升您的使用体验,本站正在维护,部分功能暂时无法使用。如果本站文章无法解决您的问题,您想要向社区提问的话,请到 Twitter 上的 @FirefoxSupport 或 Reddit 上的 /r/firefox 提问,我们的支持社区将会很快回复您的疑问。

搜索 | 用户支持

防范以用户支持为名的诈骗。我们绝对不会要求您拨打电话或发送短信,及提供任何个人信息。请使用“举报滥用”选项报告涉及违规的行为。

详细了解

Date.prototype.toJSON() and Date.prototype.toISOString() discrepancy

  • 6 个回答
  • 0 人有此问题
  • 58 次查看
  • 最后回复者为 Mathias Frost

more options

console.log(new Date().toJSON()); console.log(new Date().toISOString());

// Actual output: // 2023-05-27T04:21:13.004Z // 2023-05-27T06:21:13.005Z

// Expected output: // 2023-05-27T06:21:13.004Z // 2023-05-27T06:21:13.005Z

This happens only on Firefox and Firefox Developer Edition on one of my PCs and not the other. Firefox is version 113.0.2 (64-bit) and DE is 114.0b9 (64-bit)

Anyone experienced this before?

console.log(new Date().toJSON()); console.log(new Date().toISOString()); // Actual output: // 2023-05-27T04:21:13.004Z // 2023-05-27T06:21:13.005Z // Expected output: // 2023-05-27T06:21:13.004Z // 2023-05-27T06:21:13.005Z This happens only on Firefox and Firefox Developer Edition on '''one''' of my PCs and '''not''' the other. Firefox is version 113.0.2 (64-bit) and DE is 114.0b9 (64-bit) Anyone experienced this before?

被采纳的解决方案

Do you have enabled "Resist Fingerprinting" if you check this pref on the about:config page?

定位到答案原位置 👍 0

所有回复 (6)

more options

选择的解决方案

Do you have enabled "Resist Fingerprinting" if you check this pref on the about:config page?

more options

Setting `privacy.resistFingerprinting` to `true` fixed the discrepancy, but... why?

more options

Note that best is to keep this pref set to false as this can cause issues.

I can't replicate this, with both RFP disabled and enabled I get the same UTC output as expected. Does it make a difference what timezone is set in the OS ?

Do you get the correct local time via console.log(new Date()) ?

more options

Yeah, I noticed some undesirable side-effects from having that to true, but weirdly enough, when turning it back to false, the issue is still fixed:

console.log(new Date()) // Date Sun May 28 2023 18:49:13 GMT+0200 (Central European Summer Time)

console.log(new Date().toJSON()) // 2023-05-28T16:49:51.947Z

console.log(new Date().toISOString()) // 2023-05-28T16:50:10.427Z

Seconds diff is because I executed them individually.

End even werider (or not, depending on whether or not DE and normal Firefox share config), on Developer Edition, where I have not toggled privacy.resistFingerprinting, the issue is also fixed:

console.log(new Date()) // Date Sun May 28 2023 18:53:43 GMT+0200 (Central European Summer Time)

console.log(new Date().toJSON()) // 2023-05-28T16:53:54.024Z

console.log(new Date().toISOString()) // 2023-05-28T16:54:03.475Z

Not sure what to make of this :D Maybe some weird, edge-case bug...

more options

Did you get the local time in the case where it went wrong ?

more options

Yes, new Date() and new Date().toISOString() gave correct time