Mongoose .find 以错误的格式给我日期
Mongoose .find is giving me dates in the wrong format
等等 MongoDB 我有一个 Date 对象存储如下:
"$date": "2015-08-27T13:50:49.000Z"
所以 MongoDB 上的日期是正确的。然后,我使用 Mongoose .find()
在该数据库中获取 'newest' 消息,如下所示:
Message.find({}).sort({ "created_at" : -1 })
.limit(1)
.exec(function(error, result) {
if(error) callback(error);
var date = moment(result.created_at);
console.log(date);
console.log(result);
callback(null, result);
});
因此,当我将 result
登录到控制台(消息本身)时,它显示的时间如下:
created_at: Thu Aug 27 2015 21:50:49 GMT+0800 (CST)
时间是正确的,但我不想收到 GMT 日期,因为它清楚地存储在 MongoDB 上作为 UTC。在此特定示例中,moment(result.created_at)
将日期打印到控制台,如下所示:
{ [Number: 1440685886247]
_isAMomentObject: true,
_isUTC: false,
_locale:
{ _ordinalParse: /\d{1,2}(th|st|nd|rd)/,
ordinal: [Function],
_abbr: 'en',
_ordinalParseLenient: /\d{1,2}(th|st|nd|rd)|\d{1,2}/ },
_d: Thu Aug 27 2015 22:31:26 GMT+0800 (CST) }
不知何故,这实际上是根据我的笔记本电脑打印当前时间。当使用 MongoDB.
中的日期将 date
声明为 moment()
时,我不知道为什么要这样做
那么有人知道我如何才能成功地使用数据库中的日期吗?将消息打印到控制台时,我在 GMT 中打印了它,而在使用 moment 时,我似乎在打印笔记本电脑的时间。
谢谢!
更新:
到目前为止,我已尝试使用以下方法从数据库中获取 result.created_at
并将其输出到控制台:
var date = Date(result.created_at) // Prints current time on laptop
var date = new Date(result.created_at) // Prints undefined
var date = result.created_at // Prints undefined
var date = moment(result.created_at) // Prints moment object with the time as computer's time
我有点卡住了。我想将这个日期对象用于另一个功能,但只能让它保存计算机的时间。
您在这里遇到的主要问题是,对于 find
,回调的 result
参数是一个数组,即使您已将结果限制为 1 个文档。
所以要访问一个文档的 created_at
属性 它将是:
result[0].created_at
然后,要获取其包含的 UTC 日期和时间的字符串版本,请对其调用 toUTCString()
:
result[0].created_at.toUTCString()
等等 MongoDB 我有一个 Date 对象存储如下:
"$date": "2015-08-27T13:50:49.000Z"
所以 MongoDB 上的日期是正确的。然后,我使用 Mongoose .find()
在该数据库中获取 'newest' 消息,如下所示:
Message.find({}).sort({ "created_at" : -1 })
.limit(1)
.exec(function(error, result) {
if(error) callback(error);
var date = moment(result.created_at);
console.log(date);
console.log(result);
callback(null, result);
});
因此,当我将 result
登录到控制台(消息本身)时,它显示的时间如下:
created_at: Thu Aug 27 2015 21:50:49 GMT+0800 (CST)
时间是正确的,但我不想收到 GMT 日期,因为它清楚地存储在 MongoDB 上作为 UTC。在此特定示例中,moment(result.created_at)
将日期打印到控制台,如下所示:
{ [Number: 1440685886247]
_isAMomentObject: true,
_isUTC: false,
_locale:
{ _ordinalParse: /\d{1,2}(th|st|nd|rd)/,
ordinal: [Function],
_abbr: 'en',
_ordinalParseLenient: /\d{1,2}(th|st|nd|rd)|\d{1,2}/ },
_d: Thu Aug 27 2015 22:31:26 GMT+0800 (CST) }
不知何故,这实际上是根据我的笔记本电脑打印当前时间。当使用 MongoDB.
中的日期将date
声明为 moment()
时,我不知道为什么要这样做
那么有人知道我如何才能成功地使用数据库中的日期吗?将消息打印到控制台时,我在 GMT 中打印了它,而在使用 moment 时,我似乎在打印笔记本电脑的时间。
谢谢!
更新:
到目前为止,我已尝试使用以下方法从数据库中获取 result.created_at
并将其输出到控制台:
var date = Date(result.created_at) // Prints current time on laptop
var date = new Date(result.created_at) // Prints undefined
var date = result.created_at // Prints undefined
var date = moment(result.created_at) // Prints moment object with the time as computer's time
我有点卡住了。我想将这个日期对象用于另一个功能,但只能让它保存计算机的时间。
您在这里遇到的主要问题是,对于 find
,回调的 result
参数是一个数组,即使您已将结果限制为 1 个文档。
所以要访问一个文档的 created_at
属性 它将是:
result[0].created_at
然后,要获取其包含的 UTC 日期和时间的字符串版本,请对其调用 toUTCString()
:
result[0].created_at.toUTCString()