gpt4 book ai didi

javascript - 不同浏览器中日期值的 JSON.stringify 差异

转载 作者:可可西里 更新时间:2023-11-01 01:18:24 25 4
gpt4 key购买 nike

我在 HTML 页面中有这段代码:

alert(JSON.stringify(new Date()));

我包括最新的 json2.js (2009-09-29 版)在我的页面中支持没有 JSON.stringify() 的旧浏览器。我还包括 jquery-1.3.2.js。我相信具有 native JSON 支持的较新浏览器,它只是传递给 native JSON 功能。

这是我在不同浏览器中得到的结果:

IE 8 on Windows XP: "2010-02-07T21:39:32Z"
Chrome 4.0 on Windows XP: "2010-02-07T21:39:59Z"
Firefox 3.0 of Windows XP: "2010-02-07T21:40:41Z"
Chrome 4.0 on Ubuntu linux: "2010-02-07T21:41:49Z"
Firefox 3.0 on Ubuntu linux: "2010-02-07T21:42:44Z"
Chrome 4.0 on Mac OSX: "2010-02-07T21:43:56Z"
Safari on Mac OSX: "2010-02-07T21:45:21Z"
Firefox 3.5 on Mac OSX: "2010-02-07T21:44:10.101Z"

注意到最后一个了吗?它包含毫秒,其他都没有。我没有在任何其他系统上安装 FF3.5,但我假设它们会有相同的结果。

我可以做些什么来使所有平台上的所有日期字符串化相同吗?我的后端 REST 服务可以配置格式字符串以反序列化 JSON 日期,但它不能支持多种格式,只能支持一种格式。

最佳答案

我通过添加以下 javascript 实现了这一点:

// Added to make dates format to ISO8601
Date.prototype.toJSON = function (key) {
function f(n) {
// Format integers to have at least two digits.
return n < 10 ? '0' + n : n;
}

return this.getUTCFullYear() + '-' +
f(this.getUTCMonth() + 1) + '-' +
f(this.getUTCDate()) + 'T' +
f(this.getUTCHours()) + ':' +
f(this.getUTCMinutes()) + ':' +
f(this.getUTCSeconds()) + '.' +
f(this.getUTCMilliseconds()) + 'Z';
};

我确定这可能会减慢序列化速度,但它似乎可以使浏览器之间的内容保持一致。

关于javascript - 不同浏览器中日期值的 JSON.stringify 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2218564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com