gpt4 book ai didi

javascript - 如何使用JSON.parse reviver参数解析日期字符串

转载 作者:数据小太阳 更新时间:2023-10-29 05:43:50 25 4
gpt4 key购买 nike

我的 JSON 字符串包含返回这样一个值的日期字段:

"2009-04-04T22:55:16.0000000-04:00"

我特别感兴趣的是只解析日期隔间而不是时间。我尝试使用 reviver 函数,但有趣的是 reviver 函数从未被调用过! (在 Firefox 上试过)

这是我实现该目标的代码:

var Site = {
.....
dateReviver: function(key, value) {
var a;
if (typeof value === 'string') {
a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
if (a) {
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+a[5], +a[6]));
}
}
return value;
},
loadArticle: function(id) {
....
proxy.getArticle(id, function(response) {
var data = JSON.parse(response.result, Site.dateReviver);
....
});
}
};

loadArticle 中的 JSON.parse 从不调用 dateReviver

我投入了一整天,但没有运气!有人可以帮我吗?

最佳答案

使用TypeScript,我的解决方案如下:

    export function parseWithDate(jsonString: string): any {
var reDateDetect = /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})/; // startswith: 2015-04-29T22:06:55
var resultObject = JSON.parse(jsonString,(key: any, value: any) => {
if (typeof value == 'string' && (reDateDetect.exec(value))) {
return new Date(value);
}
return value;
});
return resultObject;
}

世界上最好的;-)它使用匿名 datereviver,由 JSON.parse 在每个属性上调用。reviver 逻辑是检查属性是否为字符串类型,如果是,是否看起来像日期的开始......如果它是一个日期,则让 new Date(value) 进行实际解析......所有时区变化都以这种方式得到支持。

希望对您有所帮助!

关于javascript - 如何使用JSON.parse reviver参数解析日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1792865/

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