【问题标题】:MongoDB ISODate returns incorrect day and monthMongoDB ISODate 返回不正确的日期和月份
【发布时间】:2019-12-15 09:26:02
【问题描述】:

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

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

用法(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

天是5,月份是9,但应该分别是2610

截图 -

我做错了什么?

【问题讨论】:

    标签: mongodb date mongo-shell isodate


    【解决方案1】:

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

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

    对于 Date.getMonth(),JavaScript Date 返回值 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

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 2017-05-21
      • 2018-05-10
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      相关资源
      最近更新 更多