$dateFromString(字符串转日期)

最后更新:2026-10-09

$dateFromString(字符串转日期)

$dateFromString 按指定格式把字符串解析为日期,是 $dateToString 的逆操作,常用于把导入数据或前端传来的日期字符串转为 BSON Date。format 使用与 $dateToString 相同的占位符(%Y、%m、%d 等),缺省按 ISO 8601 解析。解析失败时可指定 onError 兜底值,输入为 null 时可指定 onNull 兜底值。timezone 决定不含时区信息的字符串被解释为哪个时区。

分类日期
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ $dateFromString: { dateString: <日期字符串>, format: <格式串>, timezone: <时区>, onError: <默认值>, onNull: <默认值> } }

⚙️ 参数

dateString必填,要解析的日期字符串。
format可选,解析格式串,缺省按 ISO 8601。
timezone可选,字符串不带时区信息时按其解释。
onError / onNull可选,解析失败或输入为 null 时的兜底值。

返回值:解析出的 BSON Date;失败时返回 onError(缺省抛异常),输入 null 时返回 onNull(缺省 null)。

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// $dateFromString:解析导入日志时间戳(北京时间)
 db.imports.aggregate([
  { $project: {
      createdAt: { $dateFromString: { dateString: '$ts', format: '%Y-%m-%d %H:%M', timezone: 'Asia/Shanghai' } }
  } }
])

运行结果:

{ "_id": 1, "createdAt": ISODate("2026-09-25T08:30:00Z") }
{ "_id": 2, "createdAt": ISODate("2026-09-25T09:00:00Z") }

📌 注意事项

📚 相关教程

❓ 常见问题

Q字符串格式不固定怎么解析?
A不传 format 时按 ISO 8601 尝试解析;格式固定时尽量显式指定 format。
Q解析失败会报错吗?
A会,除非指定 onError 提供兜底值。
Q和 $toDate 有什么区别?
A$toDate 只做宽松的类型转换,$dateFromString 可精确控制格式与时区。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏