创建文档并设置日期-猫鼬

时间:2019-01-09 12:40:07

标签: javascript node.js mongodb date mongoose

我正在尝试在mongo中创建一个字段日期为日期的文档。

当我发布到API时,创建的文档与我设置的时间不同,如下所示:

{
"serialnumber": "1234567",
"date": "2019-08-30T10:32"
}

结果:

{
    "troubles": [],
    "_id": "5c35e9c8e726822a243936a9",
    "serialnumber": "1234567",
    "date": "2019-08-30T13:32:00.000Z",
    "updated": "2019-01-09T12:32:08.996Z",
    "__v": 0
}

我的猫鼬模式:

var MeasurementSchema = new Schema({
    serialnumber: String,
    date: Date
......

我们看到,我写了'T10:32',但是参数'date'的时间为12:32。

有什么提示吗?

1 个答案:

答案 0 :(得分:1)

默认情况下,MongoDB将时间存储在UTC中,并将所有本地时间表示形式转换为这种形式。

必须对某些未修改的本地时间值进行操作或生成报告的应用程序可以将时区与UTC时间戳一起存储,并在其应用程序逻辑中计算原始本地时间。

示例

在MongoDB Shell中,您可以存储当前日期和当前客户与UTC的偏移量。

var now = new Date();
db.data.save( { date: now,
                offset: now.getTimezoneOffset() } );

您可以通过应用保存的偏移量来重建原始本地时间:

var record = db.data.findOne();
var localNow = new Date( record.date.getTime() -  ( record.offset * 60000 ) );