问题描述
我正在尝试弄清楚如何在 axios 调用中使用 LUXON 转换我的数据库日期,这是否可行,或者我应该在数据库数据本身内更改它吗?
这是我的代码如下:
const onClickDay = (date) => {
// setMonth(date.getMonth() + 1);
// setDay(date.getDate());
// setyear(date.getFullYear());
getAllData().then((res) => {
setSave(res[1]);
setExpense(res[2]);
const getSaveDates = save.map((item) => {
const d = item.date;
const saveConverted = DateTime.fromISO(d).toLocaleString();
});
});
console.log(save);
};
我稍后在渲染时对其进行了转换,但是,我还使用 react-calendar 作为组件并尝试预先获取要转换的日期,以便我的 onClick 处理程序在其受尊重的日期渲染日期。
截至目前,数据采用 ISO-8601 日期格式,即 2020-12-21T20:06:52+0000
也许你们有更多的经验?请帮忙! 提前致谢!
解决方法
根据此link
Date() 构造函数有四种基本形式:
- 无参数
- 时间值或时间戳编号
- 时间戳字符串
- 单个日期和时间组件值
所以我认为您可以使用以下代码解决您的问题:
const getSaveDates = save.map((item) => {
const d = new Date(item.date)
const saveConverted = d.toLocaleString();
});
,
对于一些迷失的灵魂,我用...解决了部分问题
const onClickDay = (date) => {
// setMonth(date.getMonth() + 1);
// setDay(date.getDate());
// setyear(date.getFullYear());
getAllData().then((res) => {
setSave(res[1]);
setExpense(res[2]);
});
const getSaveDates = save.map((item) => {
const d = item.date;
const saveConverted = DateTime.fromISO(d).toLocaleString();
return { ...item,date: saveConverted };
});
const getExpenseDate = expense.map((item) => {
const d = item.date;
const expenseConverted = DateTime.fromISO(d).toLocaleString();
return { ...item,date: expenseConverted };
});
setData([getExpenseDate,getSaveDates]);
};
console.log(data);