起因
最近用mongodb存储时间时,发现存入的时间取出时少了8小时,研究后发现mongodb存储Date类型数据时,用ISODate包裹传入的时间,用0时区的ISO格式时间(也就是UTC时间)显示,如图:
转成本时区时间的方法
1 new Date(time)
2 new Date(time).tolocaleString()
3 转成时间戳加上8个时区的时间再转回UTC
我比较喜欢第三个方法的格式,稍微处理一下
思考
原本的思路是找设置mongodb的设置,直接改数据库的时区,发现找不到,似乎官方不支持。 这样也好,可以适配不同时区的用户显示当地时区的时间,我这里用了8把函数写死了,若以后写有这方面需求的项目可以用new Date(time).getTimezoneOffset() 获取0时区和当地相差的分钟数,例如东8区返回-480。
自己的第一篇文章,内容不干,但是,希望能养成输出的习惯促使自己多学。