今天项目遇到一个问题,当前时间保存进数据库总比现在少几个小时,应该是时区问题,接下来就是排查问题的步骤,
首先,先看java代码中springboot启动类关于时期的配置:
@SpringBootApplication(exclude={SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class, MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
@ComponentScan(basePackages = {"com.zd.web.consumer", "com.zd.common"})
@EnableDubbo
public class ZdWebConsumerApplication {
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
}
public static void main(String[] args) {
SpringApplication.run(ZdWebConsumerApplication.class, args);
}
}
没有问题,已经设置过了。
然后是数据库中关于时区的设置,show variables like '%time_zone%'
发现mysql用的系统的时区,参考文章:https://blog.csdn.net/cookingchickenboy/article/details/84939127
最后,看项目关于数据库的配置,在mysql连接信息后面加上
&serverTimezone=Asia/Shanghai
问题解决了!