(edit by justin)前两日在test某个应用的时候发现一个问题,话说这个应用里面的一个功能是会取得系统的时间并在前段显示,当然部署的服务器的时间设置是美国的太平洋时间(PDT),但是应用启动后在前端的显示无论如何都是中国本地时间(CST),这个究竟是怎么个回事呢...
查了相关的资料总算有了点眉目,问题的关键是在jvm虚拟机的时间上,我们的应用在new Date的时候是从jvm中取得当前的时间而不是直接取的系统时间,jvm的时间在启动时如果没有标注启动参数固定user.timezone的时区值的话默认是读取/etc/sysconfig目录下的clock文件中的记录(linux下),该文件内容如下:
ZONE="Asia/Shanghai"
UTC=false
ARC=false
其中的ZONE的值就是标志时区选择的字段,通过修改这个字段为GMT-7 的方式可以修改为美国的PDT市区,意义么大家都懂的咯~
需要注意的是你也可以通过在启动你的jvm的时候增加设置user.timezone的方式来达到修改jvm时区的需求