我将一天中的时间存储在Mysql数据库中(如上午7:15(。我不知道为什么,但自从我升级到Play 2.6后,我有4.5个小时的差异。
当我查看Mysql数据库中的原始数据时,我得到了正确的时间:
| id | start_time | UNIX_TIMESTAMP(start_time) | TIMESTAMPDIFF(SECOND,'1970-01-01 00:00:00',start_time) |
12 | 1970-01-01 08:30:00 | 27000 | 30600 |
但当我在应用程序中使用它时,我会提前4.5小时获得时间:
Action time start: Thu Jan 01 04:00:00 GMT 1970 - 10800000 id: 12
代码:
Logger.debug("TZ " + Calendar.getInstance().getTimeZone());
for(ActionTime time : action.getTimes()) {
Logger.debug("Action time start: " + time.getStartTime() + " - " + time.getStartTime().getTime() + " id: " + time.getId());
}
MySql时间是正确的,就像今天早些时候升级前一样。记录器中打印的时区也是正确的(现在是UTC+1,所以我对MySql.中的小时感到满意
我也升级了我的Mysql驱动程序,但恢复到旧的驱动程序并没有什么不同。据我所知,ebean版本的变化是最大的变化吗?
我怎样才能弄清楚会发生什么?
经过大量的跟踪和错误,解决方案是添加
[server]
default-time-zone=+00:00
到服务器配置。这解决了4.5小时的补偿问题。