使用UTC时间来保存猫鼬和检索日期,更改为服务器时区



我正在使用Mongoose模型来保存我的记录,包括创建和更新日期。这是我的模型模式:

var CasesModelSchema = new mongoose.Schema(
    {
        caseId: Number,
        sessionId: String,
        createdAt: {type: Date},
        updatedAt: {type: Date, default: Date.now},
        docs: mongoose.Schema.Types.Mixed
    },
    {
        collection: 'cases'
    }
);

我面临的问题是updatedAt字段将DateTime保存为ISODate("2017-04-24T12:40:48.193Z")(在UTC中(,但我的服务器的时区为Asia/Calcutta。由于我需要根据服务器的时间进行查询,因此我需要将数据列出保存在我的首选时区中。

这是我需要执行的查询(获取过去10天的所有数据(

var today = moment(moment().format('YYYY-MM-DD')).toDate();
var tenDaysDate = moment(moment().format('YYYY-MM-DD')).add(-10, 'days').toDate();
CasesModel.findOne({updatedAt: {$gte: tenDaysDate, $lt: today}}, 
    function(err, caseData){
    cl(caseData, __line);
});

我想要的是进行查询以在过去的10天内获得所有更新的记录,恰好从10天午夜(Asia/Calcutta TimeZone(到今天的午夜(Asia/Calcutta TimeZone(。我该怎么做?

我想要的是进行查询以在过去的10天内获得所有更新的记录,恰好从10天午夜(亚洲/加尔各答时区(到今天的午夜(亚洲/加尔各答时区(。我该怎么做?

如果通过"今天的午夜",您的意思是上次发生的午夜(在这种情况下,您不会从秒前获得结果(,那么您可以使用某些东西这样 - 使用您的本地时区:

// use moment-timezone to handle time zones correctly:
const moment = require('moment-timezone');
let end = moment().startOf('day').tz('UTC')
let start = end.subtract(10, 'days');

或明确使用亚洲/加尔各答时区:

let end = moment.tz('Asia/Calcutta').startOf('day').tz('UTC');
let start = end.subtract(10, 'days');

如果通过"今天的午夜",您的意思是下一个午夜(在这种情况下,您 will 从片刻中获取结果(,那么您可以使用某些东西这样 - 使用您的本地时区:

let end = moment().endOf('day').tz('UTC')
let start = end.subtract(10, 'days');

或明确使用亚洲/加尔各答时区:

let end = moment.tz('Asia/Calcutta').endOf('day').tz('UTC');
let start = end.subtract(10, 'days');

您将拥有与您本地午夜相对应的UTC日期,准备在Mongo查询中使用。

无需更改Mongo中的任何内容。

相关内容

  • 没有找到相关文章

最新更新