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

hkmswyz6  于 2022-11-13  发布在  Go
关注(0)|答案(3)|浏览(166)

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

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

PS:我知道最好是以UTC格式保存时间,但这里我的要求是以指定的时区保存时间。

aiazj4mn

aiazj4mn1#

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

72qzrwbm

72qzrwbm2#

即使认为以本地格式存储时间不是一个好的做法,但这可能会有所帮助-

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);
});
l0oc07j2

l0oc07j23#

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

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

相关问题