我用的 mongoose ,
这是我定义的 Schema :
const report = mongoose.Schema({
datetime: Date,
username: String,
detail: mongoose.Schema.Types.Mixed
})
这是我存入的数据:
let params = {
username: 'testadmin',
detail: '23123',
datetime: new Date('December 17, 1995 03:24:00')
}
存进 mongodb 中后存的时间会早八个小时:
‘95年12月17日凌晨3点’变成了‘12月16日晚上7点,时区搞错了,,,请问大家这种情况应该怎么办?mongodb 或者 mongoose 有相应的处理方法吗?
小弟这里先谢过!
伊谢尔伦2017-06-05 11:10:46
原来mongodb中存的是UTC时间,全球统一,,,那就直接存,再存之前不做操作,读取出来后把时间new Date(report.datetime).toLocaleString(),调用js自带的Date().toLocaleString()就行了
漂亮男人2017-06-05 11:10:46
因为 mongoose 和 sequelize 开始的时候,没有考虑时区,ORM 之后就搞错时区了。解决方法去看看最新版本是否解决,如果还未解决可以试试把问题发给作者,然后只能自己在应用层预处理,写入 +8 小时,读出 -8 。
我想大声告诉你2017-06-05 11:10:46
正如楼上有同学所说的,使用ISO格式:new Date("2017-03-02T08:00:00+08:00")
或者
使用moment.js
供参考。
Love MongoDB! Have fun!