Java中的TimeZone夏令时问题解决(二)

2015-02-13 18:23:44 · 作者: · 浏览: 63
:00的时候时间并没有向后调整到3:00 ,这说明Java没有找到对应的时区信息(也许这是Java的一个bug),所以Java就不知道当前这个时区是不是使用了夏令时,所以最终导致取得的时间不对。


对于这类问题,可以通过下面两个方法解决


1. 使用TZ环境变量,然后在运行Java程序


$ export TZ=America/North_Dakota/Center


$ java TimeZoneTest


2. 使用-Duser.timezone=America/North_Dakota/Center作为Java虚拟机的系统参数


java -Duser.timezone=America/North_Dakota/Center TimeZoneTest


另外,可以通过下面的一些命令查看系统的timezone信息


cat /usr/share/zoneinfo/zone.tab
zdump /usr/share/zoneinfo/*
zdump -v /usr/share/zoneinfo/America/New_York 查看夏令时时间变化点
zdump -v /etc/localtime
tz_convert /usr/share/zoneinfo/
sudo cat /etc/sysconfig/clock