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);
posted @   江南小镇的一缕阳光  阅读(848)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示