最近项目遇到一个坑,就是server和db之间存在时区问题,本人的db是utc时间,
可以使用代码设置时区来解决,本人这里使用joda三方包,joda蛮好用的,具体用法这里不做详细描述。
先引入pom
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.1</version>
</dependency>
下面在使用的地方加上下面一句即可。
// 这里使用UTC,还有其他的配置参数,比如: Asia/Shanghai Asia/Chongqin 等等 DateTime utcDT = new DateTime().withZone(DateTimeZone.UTC).toLocalDateTime().toDateTime();
...
...
...
UserDto dto = new UserDto();
dto.setCreated(utcDT.toDate());
userMapping.insertRecords(dto);
除了上面的方法外,还可以在驱动器的连接URL上加参数,如下:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxx?useUnicode=true&characterEncoding=utf8 &allowMultiQueries=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=111111
说明:useLegacyDatetimeCode=false 关键是这个参数, 引用:http://www.voidcn.com/article/p-eqvuhiio-bsb.html 这里有详细的介绍
附上mysql官网文档:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html |