Ich verwende Mungo,
Dies ist das Schema, das ich definiert habe:
const report = mongoose.Schema({
datetime: Date,
username: String,
detail: mongoose.Schema.Types.Mixed
})
Das sind die Daten, die ich gespeichert habe:
let params = {
username: 'testadmin',
detail: '23123',
datetime: new Date('December 17, 1995 03:24:00')
}
Die in Mongodb eingesparte Zeit beträgt acht Stunden früher:
„3:00 Uhr am 17. Dezember 1995“ wird zu „19:00 Uhr am 16. Dezember, die Zeitzone ist falsch,,, Bitte sagen Sie mir was.“ sollten Sie in dieser Situation tun? Gibt es eine entsprechende Verarbeitungsmethode in Mongodb oder Mungo?
Vielen Dank im Voraus, Bruder!
原来mongodb中存的是UTC时间,全球统一,,,那就直接存,再存之前不做操作,读取出来后把时间new Date(report.datetime).toLocaleString(),调用js自带的Date().toLocaleString()就行了
因为 mongoose 和 sequelize 开始的时候,没有考虑时区,ORM 之后就搞错时区了。解决方法去看看最新版本是否解决,如果还未解决可以试试把问题发给作者,然后只能自己在应用层预处理,写入 +8 小时,读出 -8 。
存成unix时间戳吧,这样就不会有啥问题了,取出来的时候 根据时区去处理转换就可以了
你在把那个iso时间new Date回来就好了,存的是iso标准时间,new Date的时候回自动转成本地时区
正如楼上有同学所说的,使用ISO格式:new Date("2017-03-02T08:00:00+08:00")
或者
使用moment.js
供参考。
Love MongoDB! Have fun!
可以尝试保存时间戳