如何在特定时区保存猫鼬日期时间

时间:2017-04-25 06:09:07

标签: node.js mongodb datetime mongoose timezone

Mongoose以UTC格式将日期时间保存为ISODate("2017-04-25T09:40:48.193Z")。如何将其时区更改为本地服务器时区。因此,每次从db中检索时,我都不需要更改时间。这是我的模型架构:

var MyModelSchema = new mongoose.Schema(
    {
        id: Number,
        description: String,
        created: {type: Date},
        modified: {type: Date, default: Date.now},
    },
    {
        collection: 'my'
    }
);

PS:我知道最好以UTC格式节省时间,但我的要求是将其保存在指定的时区。

3 个答案:

答案 0 :(得分:0)

即使认为以当地格式存储时间也不是一个好习惯,但这可能会有所帮助 -

date = new Date(); //2017-04-25T06:23:36.510Z
date.toLocaleTimeString();  //'11:53:36 AM'
localDate = ""+d;  //'Tue Apr 25 2017 11:53:36 GMT+0530 (IST)'

将在保存对象的地方进行更改 -

var date = new Date(); //2017-04-25T06:23:36.510Z
date.toLocaleTimeString();  //'11:53:36 AM'
var localDate = ""+d;  //'Tue Apr 25 2017 11:53:36 GMT+0530 (IST)'

var newModel = new ModelSchema()
newModel.description = 'Something';
newModel.created = locaDate;
newModel.save(function(err) {
    if (err)
    throw err;
    return done(null, newUser);
});

答案 1 :(得分:0)

您可以保存用户时区,并在更新时为此新对象添加时区值。最好使用moment.js来转换它。 moment

答案 2 :(得分:0)

我想我有一个解决方案。在亚洲/加尔各答试试这个,可以在Mongoose中存储为日期类型

function getCurrentIndianDateTime(){
    var moment = require('moment-timezone');
    var time = moment.tz('Asia/Calcutta').format("YYYY-MM-DDTHH:MM:ss");
    return new Date(time);
}