文章框架:
原因:遇到了和时区相关的问题,但网上检索的结果并不如人意,都只是讲了其中的一部分问题,所以我来写个完整的,都是使用idea debug一步步利用控制变量法得出来的实验性结论。
内容:我会写的尽量详细,但有时候又会觉得太啰嗦了,所以在问题分析部分我给了两个版本,一份给大神看,一份给曾经的自己看。
遇到的问题(场景复现):
业务:
用户通过前端页面点击新增,创建了一条业务内容后,在业务一览展示中会有对应业务的创建时间信息,但用户发现显示的创建时间比他当时所在的时间少了十六个小时,比如他是北京时间17:00创建的,前端展示创建时间为01:00。
业务实现逻辑:
当用户点击新增业务时,前端传入用户输入的业务类数据,后端java程序使用mybatis向mysql插入业务类数据的同时,还要插入创建时间,对应语句简化为:
insert into testTable(userID,functionId,someData,createTime)
values('1231456','1255555','datafortest',now());
上图前三个字段的值是从前端传来的数据,最后一个使用了sql 函数 now()来获取当前时间。
java jdbc连接mysql的url是:
jdbc:mysql://${DATABASE_ADDRESS}/${DATABASE_NAME}?characterEncoding&