如果我们用Java的new Date()
方式创建时间,保存到MongoDB后,会发现MongoDB中的时间总是比当前时间少8个小时,这是因为MongoDB存储时区用的是UTC+0:00
,中国的时区为UTC+8:00
。
解决办法为:在程序代码中添加时间转换,如果是Spring MVC返回JSON的应用,可以直接在实体类中Date
类型的属性上添加如下注解:
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
注:@JsonFormat
注解加到get方法上。
如果使用的不是Spring MVC + JSON,也可以自己实现一个时区的转换器,用来统一转换Date类型的属性,暂时还没找到如何在MongoDB数据库端设置时区的办法,后面慢慢研究。