一般情况下不会出现如题所示的问题,既然出现了我们就要想办法解决之。以我的机器为例,我的当前系统时间是北京时间2011-08-31T08:00:00,但是newDate()得到的却是:2011-08-31T00:00:00。表示java得到的时间比当前系统时间提前了8个小时,那么我们就要想办法把java得到的时间向后推迟8个小时。解决的办法是:
1、找到你用的jre文件夹,以本机为例:C:\Program Files\Java\jdk1.5.0\jre
2、在上述文件夹下有个zi文件夹,我们的工作都在这里。
3、zi文件夹下有一个Etc文件夹,我们要做的工作就是从这个文件夹下找到对应的GMT文件替换zi下GMT文件。
4、选择哪个文件呢?如果java获取的时间+N=当前系统时间,就选择GMT-N文件,重命名为GMT,覆盖掉zi下的GMT文件,如果java获取的时间-N=当前系统时间,就选择GMT+N文件,重命名为GMT,覆盖掉zi下的GMT文件。
5、再运行一下你的程序看时间是不是正确了,如果还是不正确,请确认你的jre目录是否选得正确。
通过java语句获得系统时间,用
Date d = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss ");
System.out.println(sdf.format(d));
或者:
Calendar now = Calendar.getInstance();
System.out.println(now.get(Calendar.HOUR_OF_DAY));
System.out.println(now.get(Calendar.MINUTE));
System.out.println(now.get(Calendar.SECOND));
取 得的时间总是比系统时间少8个小时,获得的总是格林尼治时间(0时区的时间),检查系统时间确实是正确的,时区为GMT+8:00北京……等;但 是此前并没有发生这类问题,以前时间是正确的,但是重装系统后出现了java的时间问题,可能是系统时间注册表出现问题,这里就不修改注册表了。这时 MyEclipse或Java默认的时间时区是0时区,所以:
考虑到代码的可移植性,在用到时间的地方都初始化当前的时区;加上代码:
setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
修改如下:
Date d = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss ");
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
System.out.println(sdf.format(d));
或者:
Calendar now = Calendar.getInstance();
now.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));//important
System.out.println(now.get(Calendar.HOUR_OF_DAY));
System.out.println(now.get(Calendar.MINUTE));
System.out.println(now.get(Calendar.SECOND));
这样就可以了。
===========================================================================================
针对这一问题之前说过在系统代码用到时间时可以在时间初始化前加上以下一句话,但是这样比较麻烦,因此,在安装Java的JDK之后,可以替换几个源文件以达到相同的目的。
setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
另一种方法:
找到Java目录下的
依次: jdk1.60\jre\lib\zi\Etc
jdk1.60\jre\lib\zi
java\jre1.6.0_14\jre\lib\zi\Etc
java\jre1.6.0_14\jre\lib\zi
下找到GMT文件,删除之(可以备份一下,以防万一),然后复制一份GMT-8并重命名为GMT替换原来的GMT。这样,就达到了掩人耳目的目的。试一下,可以解决!
相关推荐
总的来说,Java中`new Date()` 出现时间差的问题主要源于时区设置,可以通过调整JVM时区或者在代码中设定时区来解决。同时,不要忽视操作系统自身的时区设置,因为它可能会影响到其他非Java程序的时间显示。理解并...
在Java编程中,`new Date()` 和 `Calendar.getInstance().getTime()` 都是获取当前系统时间的方法,但有时可能会出现获取到的时间与预期不符的情况。这种问题通常与时区设置、系统时间、Java运行环境以及代码逻辑...
在 Java 中计算两个日期之间的时间差是常见的需求之一,尤其是在需要处理时间序列数据的应用程序中。本文将详细介绍几种不同的方法来计算两个日期之间的差值,并提供相应的代码示例。 #### 1. 使用 `...
Java 中获取 List 中两元素时间差是指在 List 集合中计算每个元素之间的时间差异。下面是相关知识点的详细解释: List 数据结构 List 是一种常见的数据结构,在 Java 中有多种实现,例如 ArrayList、LinkedList 等...
在IT领域,特别是Java编程中,处理日期与时间是一个常见且重要的需求,尤其是在涉及系统监控、日志记录或任何需要时间精度的应用场景中。本文将深入解析如何利用Java编写一个程序来提取当前系统时间,并计算两次系统...
这篇博客文章“java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒”提供了一个实用的工具类,帮助开发者更方便地处理日期和时间差异。下面将详细解释这个工具类中的关键知识点。 1. **Java...
在Java编程语言中,处理时间差是一个常见的任务,特别是在需要计算两个日期或时刻之间间隔的场景下。本文将深入探讨Java中的时间差处理方法,包括基础API、Java 8引入的日期时间API以及一些实用技巧。 1. **基础API...
Java获取时间差(天数差,小时差,分钟差)代码示例 Java获取时间差是指计算两个时间点之间的时间间隔, Java中可以使用SimpleDateFormat类来实现时间差的计算。在Java中,时间差可以分为天数差、小时差、分钟差等。...
2. **时间差计算**:获取两个`Date`对象之间的时间差,并将其转换为所需的单位(如天、小时、分钟等)。 - **代码示例**: ```java long diff = d1.getTime() - d2.getTime(); // 获取毫秒数差值 long days = ...
- **日程管理**:在实现诸如倒计时功能或会议提醒等应用时,准确计算两个日期之间的时间差至关重要。 总之,掌握如何在Java中计算两个日期相差几天是非常有用的技能,它不仅能够帮助开发者更高效地处理日期相关的...
在Java编程中,计算两个给定日期之间的天数差是一项常见的任务,这涉及到日期和时间的处理。Java提供了多种方式来解决这个问题,包括使用`java.util.Date`、`java.util.Calendar`类,以及从Java 8开始引入的`java....
在Java中,可以通过`Date`类来表示一个特定的时间点。当需要比较两个时间点时,可以使用`after()`方法和`compareTo()`方法。这两个方法可以帮助我们判断一个时间是否晚于另一个时间或两个时间是否相等。 **示例代码...
总的来说,`TimeUtil_java-long型与Date型时间转换工具`这个压缩包很可能包含了一个方便的工具类,用于在`long`类型和`Date`类型之间进行转换,并提供了日期相关的辅助方法。在实际开发中,这样的工具类可以极大地...
可以通过将两个日期转换为毫秒值,然后相减得到它们之间的时间差,再将这个差值转换为天数。例如,`long diff = date1.getTime() - date2.getTime(); long daysDiff = diff / (24 * 60 * 60 * 1000);` 此外,Java ...
### 由夏令时间所引起的时间差的解决方法 在软件开发过程中,处理不同时区的时间数据时常常会遇到各种问题,尤其是涉及到夏令时调整的情况。本文将深入探讨由夏令时间变化所引起的时间差问题及其解决方案,并通过...
首先,我们需要定义一个方法来计算两个`Date`对象之间的时间差,并返回这个差值的秒数形式。这可以通过调用`Date`类中的`getTime()`方法来获取每个日期对应的毫秒值,然后计算这两个毫秒值之间的差值,并将其转换为...
本文将详细介绍Java中常用的时间处理方法,特别是基于`java.util.Date`、`java.text.SimpleDateFormat`、`java.util.Calendar`等类的操作,以及如何通过这些方法获取当前时间、计算日期差、获取周、月、年的第一天和...
`adjustSystemTime()`方法则会利用这个时间差,通过调用操作系统API(可能需要使用JNI或JNA)来修改本地系统时间。 请注意,实际的`SyncTime.java`文件可能会包含更详细的错误处理、日志记录以及对NTP协议更精确的...
Java获取两个日期的时间差是Java开发中常见的需求,以下是对该问题的详细解释和解决方案。 获取两个日期的时间差 要获取两个日期的时间差,我们需要使用Java中的日期和时间相关类,包括`Date`、`Calendar`、`...
### 常用Java Date方法...通过以上知识点的总结,我们不仅掌握了Java中日期和时间的基本操作,还学会了如何灵活运用`Calendar`和`Date`类的各种方法来解决实际问题。这些技能对于任何Java开发者来说都是宝贵的财富。