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

Mongoose日期字段总是设为午夜,如何保存正确时间?

解决Mongoose Date默认值为午夜时间的问题

首先确认你的Schema写法是否正确,正确的默认值配置应该是引用Date.now函数(而非立即执行),这样每次创建文档时才会取当前时间:

const yourSchema = new Schema({
  date: { type: Date, default: Date.now }
});

如果写法正确但保存后仍显示午夜UTC时间,按以下步骤排查:

  • 检查文档创建逻辑:确认你没有在创建文档时手动给date字段赋值为当天起始时间(比如new Date().setHours(0, 0, 0, 0)),如果存在手动赋值,移除后让默认值自动生效。
  • 时区转换问题:MongoDB存储的是UTC标准时间,你看到的2023-06-01T00:00:00.000+00:00是UTC时间,转换为本地时区(例如东八区会是2023-06-01T08:00:00.000+08:00)才是实际的当前时间。查询后可以用date.toLocaleString()或date.toLocaleDateString()方法转换为本地时间显示。
  • 自动维护时间戳:如果需要在创建和更新文档时都自动记录当前时间,推荐使用Mongoose的timestamps选项,它会自动生成createdAt和updatedAt字段,无需手动配置默认值:
const yourSchema = new Schema({
  // 你的其他字段定义
}, { timestamps: true });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:52:46