如何在 Express 中为 Express.js 中的 Mongo 查询创建 UTC 时间
How to create UTC Time in Express for Mongo Query in Express.js
这可能已经被问了一百次了,但我敢问:在 express / mongoose 中,我需要创建一个 UTC ISO 日期才能查询 MongoDB。这就是我正在做的:
var date = new Date(req.params.date + " 00:00:00 UTC").toUTCString();
而 req.params.date 等于此字符串:2015-01-01
.
上一行创建:Mon, 12 Jan 2015 00:00:00 GMT
,在 MongoDB 我有:
"date" : ISODate("2014-12-08T00:00:00.000Z")
如何让它工作?
您需要将查询中的日期表示为标准 JavaScript Date
对象。
所以省略 toUTCString()
部分,像这样的东西会起作用:
var date = new Date(req.params.date);
collection.findOne({date: date}, callback);
ISODate
的东西让很多人感到困惑(包括我在内的时间最长)。 ISODate
只是一个 MongoDB shell 构造,日期对象存储为 MongoDB.
中的 64 位整数 BSON Date 对象
我使用了 Date
对象的 toISOString()
方法,而不是 toUTCString()
,这工作正常。
var date = new Date(req.params.date + " 00:00:00 UTC").toISOString();
另见。 Inserting and Querying Date with MongoDB and Nodejs
将 UTC 字符串转换为日期对象
var utc_date=new Date(new Date().toUTCString());
这可能已经被问了一百次了,但我敢问:在 express / mongoose 中,我需要创建一个 UTC ISO 日期才能查询 MongoDB。这就是我正在做的:
var date = new Date(req.params.date + " 00:00:00 UTC").toUTCString();
而 req.params.date 等于此字符串:2015-01-01
.
上一行创建:Mon, 12 Jan 2015 00:00:00 GMT
,在 MongoDB 我有:
"date" : ISODate("2014-12-08T00:00:00.000Z")
如何让它工作?
您需要将查询中的日期表示为标准 JavaScript Date
对象。
所以省略 toUTCString()
部分,像这样的东西会起作用:
var date = new Date(req.params.date);
collection.findOne({date: date}, callback);
ISODate
的东西让很多人感到困惑(包括我在内的时间最长)。 ISODate
只是一个 MongoDB shell 构造,日期对象存储为 MongoDB.
我使用了 Date
对象的 toISOString()
方法,而不是 toUTCString()
,这工作正常。
var date = new Date(req.params.date + " 00:00:00 UTC").toISOString();
另见。 Inserting and Querying Date with MongoDB and Nodejs
将 UTC 字符串转换为日期对象
var utc_date=new Date(new Date().toUTCString());