You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将对象数组中MySQL日期格式转换为JavaScript Date对象?

解决MySQL日期转换为JavaScript Date对象并过滤的问题

先梳理你代码里的问题:

  • 第一种方法Date.parse(expense.date)会返回时间戳数字,执行后整个Expenses数组会变成纯时间戳数组,丢失原对象的其他字段,完全不符合你后续过滤需要完整对象的需求。
  • 第二种方法存在语法错误:变量名写错成Expense(应该是Expenses),且箭头函数末尾多了一个多余的},导致代码无法正常执行,自然日期转换也没生效。

正确的日期转换方式

先修正语法问题,同时保留原对象所有字段,仅替换date为Date对象:

// 修正变量名与多余大括号
Expenses = Expenses.map((expense) => {
  return {...expense, date: new Date(expense.date)};
});

也可以用更简洁的写法:

Expenses = Expenses.map(expense => ({...expense, date: new Date(expense.date)}));

MySQL的DATE(YYYY-MM-DD)或DATETIME(YYYY-MM-DD HH:MM:SS)格式,JavaScript的new Date()都能直接解析,只要你的expense.date是标准的MySQL日期字符串,这一步就能把它转换成有效的Date对象。

过滤时的时区注意事项

你过滤代码里创建的日期是UTC格式的2020-07-10T00:00:00,如果MySQL存储的是本地时区日期,可能会出现时区差异导致过滤结果不符合预期。要确保时区一致,可以这样处理:

// 方式1:指定时区创建过滤日期(比如东八区)
const filterDate = new Date("2020-07-10T00:00:00+08:00");
// 方式2:用本地时间创建(注意月份从0开始,7月对应6)
const filterDate = new Date(2020, 6, 10);

之后再执行过滤:

Expenses = Expenses.filter(expense => expense.date > filterDate);

验证转换是否成功

转换后可以加一句日志确认:

console.log(Expenses[0].date instanceof Date); // 输出true则说明转换成功

内容的提问来源于stack exchange,提问作者Faraz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:25:44