Tomcat中new Date()相差8个小时的各种方案及探索(二)

来源:互联网 发布:c语言定义全局变量 编辑:程序博客网 时间:2024/05/22 00:34
试想,能够在程序中控制为北京时间,这样具有更好的移植性.但经过尝试都不成功,估计原因还是Tomcat得到默认时区和语言环境获仍然是原来的.换句话说tomcat这个时间依赖于操作系统,如果系统时间不对,程序里是无法控制的.                SimpleDateFormat txtDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");                // 直接new一个Date对象                Date date1 = new Date();                System.out.println(txtDate.format(date1));                //                Calendar cal = Calendar.getInstance(new SimpleTimeZone(8,"GMT"));                Date date2 = cal.getTime();                System.out.println(txtDate.format(date2));                //                Calendar bjTime= Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));                Date date3 = bjTime.getTime();                System.out.println(txtDate.format(date3));                //                java.util.Locale   locale   =   java.util.Locale.getDefault();                java.util.Date   date4   =   new   java.util.Date();                SimpleDateFormat   sdf   =   new   SimpleDateFormat( "yyyy-MM-dd HH:mm:ss",locale);                System.out.println(sdf.format(date4));上面的代码在tomcat上运行,仍然相差8个小时.   Calendar serverDateNextHour=Calendar.getInstance(Locale.CHINA);   DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.CHINA);   serverDateNextHour.add(Calendar.HOUR_OF_DAY, 1);