当一些新的JSON到来时,我只想将所有字符串日期转换为日期对象。如果我能创建一个函数来替换使用解析日期对象调用它的字符串,我会更喜欢它。这可能吗?
SELECT REPLACE(REPLACE('Select [Field1] from [GL].[table2]', '[', ''), ']', '') final_val
FROM dual
/
答案 0 :(得分:1)
您可能只使用实用程序而不是更改原型:
function parseDates(obj, ...keys) {
const result = {...obj};
for(const key of keys)
result[key] = new Date(obj[key]);
return result;
}
可用作:
parseDates({ createdAt: 123456789 }, "createdAt");
或者更换一个:
obj = parseDates(obj, "createdAt");
答案 1 :(得分:1)
你可以使用JSON.parse
的revive,它会返回Date
个对象而不是结果中的字符串
function revive(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;
}
console.log(JSON.parse("\"2018-05-15T13:40:30.052Z\"", revive) instanceof Date);
此示例取自https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js