java 获得的系统时间与操作系统的时间不一致

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java 获得的系统时间与操作系统的时间不一致
想索取更多相关资料请加qq:649085085或登录
PS;本文档由北大青鸟广安门收集自互联网,仅作分享之用。

问题:
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)北京,重庆,香港特别行政区,乌鲁木齐
如果还不行看下:从正常的并且是相同系统的机器中导出
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones 项,然后导入到自己机器中 .
以上三种方法都是解决方法。

在修改时区的时候最好用代码看下JAVA获得的时区是什么时区,代码如下:Properties props=System.getProperties();
Iteratoriter=props.keySet()。

iterator();
while(iter.hasNext())??Stringkey=(String)iter.next();
System.out.println(key+" = "+props.get(key));
}
user.timezone=??就是JAVA获得的时区,然后再看操作系统的时区。

去改注册表吧。

weblogic :
有一个页面需要保存日期,在前台JS中DEBUG的时候都是正确的,可是存到数据库中,就发现日期少一天,准确的说是比选择的日期早了8个小时,基本就可以确定是时区的错误,
开始查找,数据库时区,没问题,服务器系统时区,没问题,
最终问题居然出在weblogic的时区上面…
weblogic是使用自带的jre,而自带的jre中默认的时区就是GMT,而中国标准时间大家都知道是GMT+8,网上有说去改weblogic自带jre中的GMT文件,把GMT8改成GMT,但总觉得这样不是很好,如果有需要使用GMT标准时间的时候会有出问题的风险
于是从weblogic的启动脚本上下手
修改 domians/project/bin/startWebLogic.cmd
找到类似
Xml代码
set JAVA_OPTIONS=%JAVA_OPTIONS%
[xml] view plaincopy
set JAVA_OPTIONS=%JAVA_OPTIONS%
在最后面加上 -Duser.timezone=GMT+8 即设置时区为GMT+8 也可写为Asia/shanghai
修改之后为
Xml代码
set JAVA_OPTIONS=%JAVA_OPTIONS% -Duser.timezone=GMT+8
[xml] view plaincopy
set JAVA_OPTIONS=%JAVA_OPTIONS% -Duser.timezone=GMT+8
保存,重新启动weblogic,问题解决
文件查找:startWebLogic.cmd
unix搜索命令:
find / -name mk/表示查找目录,也可以具体到某个目录以提高效率-name 表示以文件名查找
设置默认时区:
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);
想索取更多相关资料请加qq:649085085或登录
PS;本文档由北大青鸟广安门收集自互联网,仅作分享之用。

相关文档
最新文档