编程语言
首页 > 编程语言> > java 获 得 的 系 统 时 间 与 操 作 系 统 的 时 间 不 一 致 获 问题:-+-++-

java 获 得 的 系 统 时 间 与 操 作 系 统 的 时 间 不 一 致 获 问题:-+-++-

作者:互联网

  1.new Date() 得到的时间?和系统相差 相差8个小时 2.eclipse控制台打印的时间与系统相差 相差8个小时 3.log4j日志的时间与与系统相差 相差8个小时 上述问题其实是同一个问题。 原因: java获得的时区跟系统的时区不一样 解决方法如下: 1.在代码前加上下面这句话行了:TimeZone tz =TimeZone.getTimeZone("Asia/Shanghai");TimeZone.setDefault(tz) 2.在tomcat中修改catalina.bat文件的 set JAVA_OPTS在后面加上-Duser.timezone=GMT+08 3.修改注册表中的默认时区改成(GMT+08:00) 北京,重庆,香港特别行政区,乌鲁木齐   设置默认时区: TimeZone tz =TimeZone.getTimeZone("Asia/Shanghai"); TimeZone.setDefault(tz); Date date=new Date(); String str=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date); System.out.println(str); 设置时间格式的时区: SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss "); sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date d = new Date(); System.out.println(sdf.format(d)); 设置日历的时区:Calendar now = Calendar.getInstance(); now.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));//important System.out.println(now.get(Calendar.YEAR)); System.out.println(now.get(Calendar.MONTH)); System.out.println(now.get(Calendar.DAY_OF_MONTH)); System.out.println(now.get(Calendar.HOUR_OF_DAY)); 设置时间格式的时区: SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); System.out.println("GMT+8:"+thisTime); 系统时区: String tzId = TimeZone.getDefault().getID(); System.out.println("TimeZone.getDefault().getID():"+tzId); 系统时区: String zone = System.getProperty("user.timezone"); System.out.println("user.timezone:"+zone);

标签:java,System,问题,Date,new,println,TimeZone,-+-++-,out
来源: https://www.cnblogs.com/shaowangwu/p/16296321.html