【问题标题】:How to save mongoose date-time in particular time-zone如何在特定时区保存猫鼬日期时间
【发布时间】:2017-04-25 06:09:07
【问题描述】:

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 格式保存时间,但这里我的要求是将其保存在指定的时区。

【问题讨论】:

  • 我会强烈建议不要这样做,即使它是可行的。您真的不想将时间戳存储在服务器本地时区中。为什么你的服务器时区如此特别?当他们想要检查日志或其他什么时,将信息转换为查看者的时区更有可能有用吗?您是否打算存储一个本地日期/时间?如果是这样,那将丢失有关 DST“回退”转换的信息......如果您更改服务器时区或有多个时区,则会导致可怕的问题。 UTC 是时间戳的正确时区。)
  • 至于你的 PS - 如果有人逼你做坏主意,你有责任反击。不要只接受坏主意。
  • 服务器的时区是绝对不相关的。但是,您可能需要存储仅日期值,例如存储生日。为此,请参阅my answer here。这可能适用于无时区的本地日期和时间,但不适用于您在此处显示的创建和修改日期。这些应该始终通过 Mongo 的 ISODate 对象使用 UTC。

标签: node.js mongodb datetime mongoose timezone


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 使用我当前的猫鼬模式,我将如何将其保存在数据库中?
    • 我已根据您的要求进行了更改,请查看
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-06-10
      • 1970-01-01
      • 2022-01-16
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      相关资源
      最近更新 更多