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

Next.js项目中如何从MongoDB的createdAt字段提取标准格式时间

从MongoDB的createdAt字段提取标准格式时间(Next.js环境)

方法1:手动拼接原生Date对象的时间字段

如果从MongoDB拿到的createdAt是Date对象(MongoDB默认的ISODate在Next.js中会被解析为Date类型),可以直接通过Date的内置方法提取各部分时间,拼接成你要的YYYY-MM-DD HH:mm:ss格式:

// 假设doc是查询返回的MongoDB文档
const createdAt = doc.createdAt;

const formattedTime = `${createdAt.getFullYear()}-${String(createdAt.getMonth() + 1).padStart(2, '0')}-${String(createdAt.getDate()).padStart(2, '0')} ${String(createdAt.getHours()).padStart(2, '0')}:${String(createdAt.getMinutes()).padStart(2, '0')}:${String(createdAt.getSeconds()).padStart(2, '0')}`;
// 输出示例:2023-08-17 22:30:02

方法2:用toLocaleString快速生成格式

嫌手动拼接麻烦的话,用toLocaleString搭配配置参数,再做简单替换就能得到目标格式:

const formattedTime = doc.createdAt.toLocaleString('zh-CN', {
  year: 'numeric',
  month: '2-digit',
  day: '2-digit',
  hour: '2-digit',
  minute: '2-digit',
  second: '2-digit',
  hour12: false // 强制使用24小时制
}).replace(/\//g, '-').replace(/, /g, ' ');
// 替换斜杠为横杠、去掉逗号,最终得到YYYY-MM-DD HH:mm:ss

方法3:处理字符串类型的createdAt

如果你的createdAt存储的是字符串(比如存的时候转成了ISO字符串),先把它转成Date对象再用上面的方法:

// 示例MongoDB返回的字符串格式
const createdAtStr = "2023-08-17T22:30:02.000Z";
const createdAt = new Date(createdAtStr);

// 之后用方法1或2格式化即可

关键注意点

  • 月份getMonth()返回的是0-11,必须加1才能得到实际月份
  • padStart(2, '0')用来保证单数字的月份、日期、时分秒自动补零(比如1月→01,8分→08)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 05:12:43