gpt4 book ai didi

javascript - 将状态数组中的日期转换回 Date 对象

转载 作者:行者123 更新时间:2023-11-29 15:08:35 25 4
gpt4 key购买 nike

我正在通过 localStorage 在我的 React 应用程序中保存状态

const [items, setItem] = useState(() => {
let itemsString = window.localStorage.getItem('items');
if (itemsString) {
try {
return JSON.parse(itemsString);
} catch (e) {
console.error(e);
return [];
}
} else {
return [];
}
})

当我 JSON.parse(itemsString) 状态中的日期已转换为 UTC(因为 strings/localstorage)

如何JSON.parse() 我的状态并将日期字符串重新初始化为对象?

例如而不是返回 2019-07-19T00:28:03.058Z 而是返回 Thu Jul 18 2019 20:28:03 GMT-0400(东部夏令时间)

解决方案是在 Aaron 下面的建议的帮助下得出的。

存储旧状态。映射状态数组,创建新的空对象并将每个属性存储在其中,存储日期,将日期转换为字符串并将其传递给新的日期对象以在页面刷新时将值实例化回日期对象。

const [items, setItem] = useState(() => {
let itemsString = window.localStorage.getItem('items');
if (itemsString) {
try {
const oldState = JSON.parse(itemsString);
const newState = oldState.map(item => {
const date = item.date;
const container = {}
container.id = item.id
container.item = item.item
container.date = new Date(date.toString())
container.cost = item.cost
container.type = item.type
return container;
})

return newState;
} catch (e) {
console.error(e);
return [];
}
} else {
return [];
}
})

最佳答案

解析 itemString 后,只需将日期键设置为新的 Date 对象

const object = JSON.parse(itemString);
const newState = {...object, date: new Date(object.date)}

关于javascript - 将状态数组中的日期转换回 Date 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57104232/

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