Date类型字段反序列化后值发生变化问题

栏目: Java · 发布时间: 7年前

内容简介:Date字段在不同机器上序列化、反序列化,时间值出现半个小时的偏差。然而使用而且

Date字段在不同机器上序列化、反序列化,时间值出现半个小时的偏差。

然而使用 date 命令查看系统时间,两台机器上的时间是一致的,时区都是CST(中间标准时间)。

>> date
Sat Jun  9 13:49:21 CST 2018

而且 /etc/sysconfig/clock 文件内容也是一样的。

>> cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"

解决方案

方法一

通过 TimeZone.setDefault 方法在 Java 代码中强制设置时区为东8区。

TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
// or
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));

方法二

在JVM启动参数中增加 -Duser.timezone=Asia/Shanghai ,或者为 GMT+8

方法三

后来发现,是因为服务器上的 /etc/localtime 文件指向的是 /usr/share/zoneinfo/Asia/Harbin ,从而导致序列化Date时出现时区偏差。

Java通过 /usr/share/zoneinfo/Asia/Harbin 的文件名来确定时区,而系统命令 date 是通过文件内容来确定的,因此结果不同。

解决方法是

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

此方法在CentOS 6.5系统上验证,这里不能使用 cp 命令将文件复制过来,否则Java程序可能会出问题。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

零售的哲学:7-Eleven便利店创始人自述

零售的哲学:7-Eleven便利店创始人自述

[日] 铃木敏文 / 顾晓琳 / 江苏文艺出版社 / 2014-12-1 / 36

全球最大的便利店连锁公司创始人——铃木敏文,结合40多年零售经验,为你讲述击中消费心理的零售哲学。铃木敏文的很多创新,现在已经成为商界常识,本书把那些不可思议的零售创新娓娓道来。关于零售的一切:选址、订货、销售、物流、管理……他一次又一次地在一片反对声中创造出零售界的新纪录。 翻开本书,看铃木敏文如何领导7-11冲破层层阻碍,成为世界第一的零售哲学。一起来看看 《零售的哲学:7-Eleven便利店创始人自述》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具