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

如何在JavaScript中将MongoDB返回的字符串日期转为ISO标准格式

将MongoDB日期转换为ISO 8601格式(如'2022-07-20T10:12:21.054Z')

你可以通过两种方式实现这个转换:在MongoDB查询阶段直接处理,或者在应用端对返回的数据进行转换。

1. 在MongoDB查询时转换(推荐,减少应用端逻辑)

使用MongoDB聚合管道的$dateToString操作符,直接将createdAt字段转换成你需要的ISO 8601 UTC格式。

场景1:createdAt是MongoDB原生Date类型

db.yourCollection.aggregate([
  {
    $project: {
      _id: 1, // 保留需要的字段
      createdAtISO: {
        $dateToString: {
          format: "%Y-%m-%dT%H:%M:%S.%LZ",
          date: "$createdAt",
          timezone: "UTC" // 指定UTC时区,确保结尾带Z标识
        }
      }
      // 按需添加其他字段
    }
  }
])

场景2:createdAt存储为字符串格式

先通过$toDate将字符串转成MongoDB Date类型,再执行格式转换:

db.yourCollection.aggregate([
  {
    $project: {
      _id: 1,
      createdAtISO: {
        $dateToString: {
          format: "%Y-%m-%dT%H:%M:%S.%LZ",
          date: { $toDate: "$createdAt" },
          timezone: "UTC"
        }
      }
    }
  }
])

2. 在应用端转换(以Node.js为例)

如果已经拿到格式为"Nov. 13, 2022 at 5:51 AM "的字符串,先转成Date对象,再调用toISOString()方法生成目标格式:

// 原始日期字符串
const rawDateStr = "Nov. 13, 2022 at 5:51 AM";
// 转换为Date对象
const dateObj = new Date(rawDateStr);
// 生成ISO 8601 UTC格式字符串
const isoDateStr = dateObj.toISOString();
console.log(isoDateStr); // 输出示例:'2022-11-13T05:51:00.000Z'

如果原始字符串带特定时区信息,可借助Intl.DateTimeFormat或第三方日期库(如date-fns、day.js)处理更复杂的时区转换逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:25:25