Docs 菜单

Docs 主页开发应用程序MongoDB Manual

Date() 和 Datetime

在此页面上

  • 兼容性
  • 语法
  • 行为
  • 举例
Date()

以字符串或日期对象的形式返回日期。 日期可以包含日期和时间,称为日期时间

BSON 规范 声明 对象包含 DateUTC 日期时间 。 UTC 是 协调世界时 。 UTC 日期时间存储一个无符号64 位整数值,表示 Unix 纪元(一月1 ,1970 at00 :00 :00 UTC)之后的毫秒数。

可以使用 Date() 查找托管在以下环境中的部署:

  • MongoDB Atlas :用于在云中部署 MongoDB 的完全托管服务

您可以指定以下任一格式:

您可以通过向 new Date() 构造函数或ISODate() 函数传递符合 ISO-8601 的日期字符串来指定特定日期。其中年份范围为 09999 (含边界值)。这些函数接受以下格式:

  • new Date("<YYYY-mm-dd>") 返回具有指定日期的 ISODate

  • new Date("<YYYY-mm-ddTHH:MM:ss>") 指定客户端本地时区的日期时间,并返回具有 UTC 指定日期时间的 ISODate

  • new Date("<YYYY-mm-ddTHH:MM:ssZ>") 指定 UTC 格式的日期时间,并返回具有指定 UTC 格式的日期时间的 ISODate

  • new Date(<integer>) 将日期时间指定为自 UNIX 纪元(1970 年 1 月 1 日)以来的毫秒数,并返回生成的 ISODate 实例。

在内部,Date 对象存储为一个带符号的 64 位整数值,表示自 Unix 纪元(1970 年 1 月 1 日)以来的毫秒数。

并非所有数据库操作和驱动程序都支持完整的 64 位范围。可以安全地处理年份在 09999(含)之间的日期。

如果 products 集合中不存在 _id 等于 1 的文档,则以下操作将插入一个将字段 dateAdded 设置为当前日期的文档:

db.products.updateOne(
{ _id: 1 },
{
$set: { item: "apple" },
$setOnInsert: { dateAdded: new Date() }
},
{ upsert: true }
)

提示

另请参阅:

要以字符串形式返回日期,请使用 Date() 方法。例如:

var myDateString = Date();

mongosh使用ISODate助手包装日期类型的对象。但是,这些对象是日期类型。

以下示例使用 new Date() 返回具有指定 UTC 日期时间的 Date 对象:

var myDate = new Date("2016-05-18T16:00:00Z");

提示

可以将日期指定为 ISODate 对象。

以下示例创建了一个 cakeSales 集合,其 orderDate 字段中包含 ISODate 对象:

db.cakeSales.insertMany( [
{ _id: 0, type: "chocolate", orderDate: new ISODate("2020-05-18T14:10:30Z") },
{ _id: 1, type: "strawberry", orderDate: new ISODate("2021-03-20T11:30:05Z") },
{ _id: 2, type: "vanilla", orderDate: new ISODate("2021-01-15T06:31:15Z") }
] )

以下示例将返回其中的 orderDate 小于 $lt 操作符中指定的 ISODate 的文档:

db.cakeSales.find( { orderDate: { $lt: ISODate("2021-02-25T10:03:46.000Z") } } )

示例输出:

[
{
_id: 0,
type: 'chocolate',
orderDate: ISODate("2020-05-18T14:10:30.000Z")
},
{
_id: 2,
type: 'vanilla',
orderDate: ISODate("2021-01-15T06:31:15.000Z")
}
]
← BulkWriteResult()