使用date-fns format函数处理日期未得到预期结果求助
问题原因
你现在的代码存在两个关键问题:
map函数是返回新数组的纯函数,不会修改原数组tests,你没接收它的返回值,自然看不到处理后的结果- 你调用
format转换日期后,没有把转换结果赋值给原对象的Hour属性,也没生成新对象保存结果
解决方法
方式1:直接修改原数组(不推荐)
如果一定要修改原始数组,改用forEach遍历并赋值:
tests.forEach((test) => { test.Hour = format(test.Hour, `yyyy-MM-dd'T'HH`); console.log(test.Hour); }); console.log(tests); // 此时数组内的Hour已经是转换后的格式
方式2:生成新数组(推荐)
保持原数组不变,用map创建处理后的新数组,这是更符合JS最佳实践的方式:
const formattedTests = tests.map((test) => { const formattedHour = format(test.Hour, `yyyy-MM-dd'T'HH`); console.log(formattedHour); // 解构原对象,替换Hour属性生成新对象 return { ...test, Hour: formattedHour }; }); console.log(formattedTests); // 打印处理后的新数组
额外说明
date-fns的format函数仅返回格式化后的字符串,不会主动修改传入的日期数据。保留原始API数据有助于后续调试或其他业务场景使用,因此更推荐使用生成新数组的方式。
内容的提问来源于stack exchange,提问作者toby044
相关产品推荐
相关产品推荐

