首页 > 解决方案 > MongoDB ISODate 返回不正确的日期和月份

问题描述

我正在尝试获取将记录/文档插入 MongoDB 集合的日期。我正在使用ObjectId.getTimestamp()函数从日期获取时间戳。

该函数返回一个ISODate对象,通过这个问题,它看起来ISODate只是原生 JavaScript 的一个包装器Date。但是当我在对象上使用getDay()andgetMonth()方法时ISODate,它会返回不正确的结果,尽管小时、分钟和年份似乎很好。

用法(Mongo shell)-

> db.user.count()
1
> db.user.findOne()._id.getTimestamp()
ISODate("2018-10-26T12:52:31Z")
> db.user.findOne()._id.getTimestamp().getDay()
5
> db.user.findOne()._id.getTimestamp().getMonth()
9
> db.user.findOne()._id.getTimestamp().getFullYear()
2018
> db.user.findOne()._id.getTimestamp().getHours()
12
> db.user.findOne()._id.getTimestamp().getMinutes()
52
>

根据这个 -

> db.user.findOne()._id.getTimestamp().getDay()
5
> db.user.findOne()._id.getTimestamp().getMonth()
9

day is5和 month is 9,但应该分别是2610

截屏 -

在此处输入图像描述

我究竟做错了什么?

标签: mongodbdatemongo-shellisodate

解决方案


Date.getDay()返回星期几(0-6,0 - 星期日,1 - 星期一等),但Date.getDate()返回月份中的某一天。

db.user.findOne()._id.getTimestamp().getDate()
26

对于Date.getMonth(),JavaScriptDate返回值 0 - 11,即 0 - 1 月、1 - 2 月等。9 - 10 月。

db.user.findOne()._id.getTimestamp().getMonth() + 1
10

链接https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Getter


推荐阅读