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);