论坛首页 Java企业应用论坛

咨询调整系统的时区,为什么不能马上生效?

浏览 5572 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-07-19  
调整系统的时区后,在任务栏的时间显示马上就切换到了响应时区的日期显示,但是为什么在程序一直运行期间更改时区之后,程序打印的时间不会出现跳跃?如果再次执行程序,这是时候时区修改的效果才能看到?难道是程序运行起来后,只与系统交互一次获取时区后,不再与OS交互,只有程序再次执行才会在程序启动的时候读取当前时区?

package com.free.timezone.test;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class TestTimeZone 
{
	public static void main(String[] args) 
	{
		while(true)
		{
			Date dd = new Date();
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			//打印时间
			System.out.println(df.format(dd));
			TimeZone tz = TimeZone.getDefault();
			//打印时区名称
			System.out.println(tz.getDisplayName());
			try 
			{
				Thread.sleep(5000);
			} catch (InterruptedException e) 
			{
				e.printStackTrace();
			}
		}
	}
}



修改时区为 美国时区前后,程序一直执行后的打印

2007-07-19 22:16:49
中国标准时间
2007-07-19 22:16:54
中国标准时间
2007-07-19 22:16:59
中国标准时间
修改时区为 美国时区,程序重新执行后的打印
2007-07-19 09:17:26
中央标准时间
2007-07-19 09:17:31
中央标准时间

   发表时间:2007-07-20  
查看一下TimeZone的源代码吧,偶怀疑getDefault()会缓存结果的
0 请登录后投票
   发表时间:2007-07-20  
同楼上  正常来说都不会修改这个吧    可能是缓存起来了
0 请登录后投票
   发表时间:2007-07-20  
我正准备查看一下TimeZone的源码,我修改是为了模拟“夏令时”,查看进入“夏令时”程序日志打印等会不会有问题,把这一块弄明白后,我发一个帖子出来,与大家讨论一下!
0 请登录后投票
   发表时间:2007-07-23  
调整时间之后要重启java进程才生效的
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics