mongodb 服务器时区设置_MongoDB 中时区转换法 mongoose timezone

以北京时间东八区为例:

const GuideTaskSchema = new Schema({

__v: { type: Number, select: false },

title: { type: String, required: true },

projectId: { type: Schema.Types.ObjectId },

path: { type: String, default: '' },

startTime: { type: Date, required: true },

endTime: { type: Date, required: true },

owner: { type: Schema.Types.ObjectId, ref: 'User', required: true },

})

GuideTaskSchema.path('startTime').get(v => {

// 自定义get方法,相当于可以自己format结果

// 查询的时候,将时间向后偏移8小时,格式化后输出

const t = moment(v).utcOffset(8).format('YYYY-MM-DD HH:mm:ss')

return t

}).set(v => {

// 自定义set方法,把处理好的值保存

// 保存数据库的时候,根据自己的需求,将时间写成ISO格式时间,并定义时区为+08:00

// ISO时间格式:

// 2020-01-01T00:00:00.000Z 以Z结尾为UTC时间,偏移时间为+HH:00或+HH:00

// 更多写法请参照百度百科 https://baike.baidu.com/item/ISO%208601/3910715?fr=aladdin

return new Date(`${v}T00:00:00.000+08:00`)

})

GuideTaskSchema.set('toObject', { getters: true }) // 这个也是必须的

将Schema如上配置后,在查询的时候需要调用文档(document)的toObject方法,这样上面schema定义的set和get才会生效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值