【问题标题】:Conflicting dates in mongoose and express.jsmongoose 和 express.js 中的日期冲突
【发布时间】:2016-08-03 11:33:34
【问题描述】:

当我使用 Date 而不是 String 类型声明我的架构时会出现问题。

案例一:

var MySchema = new Schema({
    created_at: {type: String, default: ''}
});

通过这个 shema 声明,我使用 moment.js moment-timezone 模块来声明亚洲/加尔各答时区的当前时间。

var tmoment = require('moment-timezone');
var currentTime = tmoment().tz('Asia/Kolkata').format('llll');

而且我能够得到正确的时间。

案例二:

var MySchema = new Schema({
    created_at: {type: Date, default: ''}
});

通过这个 shema 声明,我使用 moment.js moment-timezone 模块来声明亚洲/加尔各答时区的当前时间。

var tmoment = require('moment-timezone');
var currentTime = tmoment().tz('Asia/Kolkata').format('llll');

但是现在时间不是按照时区来的。我什至尝试了以下声明

var tmoment = require('moment-timezone');
var currentTime = tmoment().tz('Asia/Kolkata').format();

但是找不到解决办法。

【问题讨论】:

  • 您能提供更多上下文吗?我在本地设置了它,它工作正常。
  • 调用format()会输出一个字符串。所以试试var currentTime = tmoment().tz('Asia/Kolkata'),它会给出一个日期对象
  • @mani 我试过这样做,但它给了我像2016-04-13T11:39:27.942Z 这样的日期时间,而根据我的情况,它返回Wed, Apr 13, 2016 5:09 PM
  • 你能发布你的猫鼬钩子代码来设置 created_at
  • var saveReq = new RequestModel({ created_at: currentTime }); 然后saveReq.save(function(err, result) {if(err) //condition for error});

标签: javascript node.js mongodb mongoose momentjs


【解决方案1】:

将服务器时区更改为您的本地时区。

【讨论】:

    【解决方案2】:

    当您将日期保存到 mongo 数据库时,您可以简单地保存一个 javascript Date 对象,而不管时区如何。 (在案例 2 中使用 Date 类型。)然后您将使用 moment 在您需要的任何时区显示日期。

    保存对象:

    var id = ...
    var saveReq = new RequestModel({ _id: id, created_at: new Date() });
    saveReq.save(function (err, result) {
      // ...
    });
    

    从数据库中读取对象,然后显示本地化的日期字符串:

    var tmoment = require('moment-timezone');
    RequestModel.findOne({_id: id}, function (err, doc) {
      if(err) {} // ...
      var created = doc.created_at;
      var display = tmoment(created).tz('Asia/Kolkata').format('llll');
      console.log(display);
    });
    

    【讨论】:

    • 我认为这个解决方案几乎可以解决我在两个日期之间过滤数据的问题,并且我可以将日期从特定时区更改为标准 js 格式,然后应用我的过滤逻辑。谢啦。 !!很大的帮助。 !
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    相关资源
    最近更新 更多