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) 北京,重庆,香港特别行政区,乌鲁木齐

如果还不行看下:从正常的并且是相同系统的机器中导出HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\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% 

set JAVA_OPTIONS=%JAVA_OPTIONS%



在最后面加上 -Duser.timezone=GMT+8 即设置时区为GMT+8 也可写为 Asia/shanghai
修改之后为

Xml代码 

set JAVA_OPTIONS=%JAVA_OPTIONS% -Duser.timezone=GMT+8 

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

### 回答1: Java进程管理系统是一个用于管理操作系统中的进程的软件程序。它提供了一组功能来创建、终止、调度和监视进程。 首先,Java进程管理系统可以创建新的进程。它允许用户使用一些指定的参数和设定来启动新的进程。这些参数可能包括进程的优先级、内存分配、代码路径等。通过Java进程管理系统,用户可以方便地创建并管理多个进程。 其次,Java进程管理系统可以终止进程。在某些情况下,用户可能需要中止正在运行的进程,例如当进程出现错误或者需要释放系统资源时。Java进程管理系统允许用户通过指定进程的标识符或其他特定信息,来终止指定进程。 此外,Java进程管理系统还提供了进程调度功能。它可以基于一些调度算法,如先来先服务(FCFS)、时间片轮转等,来决定进程的执行顺序。用户可以通过Java进程管理系统设置进程的优先级,从而影响进程的调度顺序。 最后,Java进程管理系统可以监视进程的运行状态。它可以提供进程的一些重要信息,如进程的ID、执行状态等。通过Java进程管理系统,用户可以实时监视进程,并及时获得相关信息。 总结而言,Java进程管理系统是一个用于管理操作系统中进程的软件程序。它提供了创建、终止、调度和监视进程的功能。通过Java进程管理系统,用户可以方便地控制和管理进程,并有效地利用系统资源。这种管理系统可以在各种操作系统上运行,并且具有良好的扩展性和灵活性。 ### 回答2: Java进程管理系统是一种基于Java编程语言开发的操作系统实验,用于管理和控制计算机上的进程。该系统主要包含进程创建、进程调度、进程同步和进程通信等功能。 首先,进程创建是指在系统中生成新的进程。Java进程管理系统可以通过调用Java的进程相关类和方法来创建进程,例如使用ProcessBuilder类来创建新的进程对象,并通过该对象执行指定的进程命令。 其次,进程调度是指根据一定的策略和算法,决定哪些进程可以获得执行时间。在Java进程管理系统中,可以通过使用多线程技术来实现进程调度。通过创建不同的线程对象,并分配不同的优先级给每个线程,可以实现简单的进程调度功能。 进程同步是指保证进程按照一定的顺序执行,避免出现竞争条件和进程间的冲突。Java进程管理系统可以使用锁、信号量等同步机制来实现进程同步。通过加锁和解锁等操作,可以控制进程对共享资源的访问,避免数据的不一致性和错误。 最后,进程通信是指进程之间通过一定的方式和机制进行信息交换和共享。Java进程管理系统可以使用Java的线程间通信机制,如共享内存、消息队列、信号量等来实现进程之间的通信。通过共享内存可以实现进程间的数据共享,通过消息队列可以实现进程间的异步通信,通过信号量可以实现进程间的同步通信。 总之,Java进程管理系统可以通过Java编程语言实现进程的创建、调度、同步和通信等功能。它为我们提供了一个实验平台,使我们能够了解和学习操作系统中进程管理的基本原理和机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值