如何在 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());