`
phosphory
  • 浏览: 72635 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类

系统时间和JVM的Date时间不一致

阅读更多

通过Java得到的时间与操作系统时间不一致,如何修改Java虚拟机时间?

造成这种问题的原因可能是:你的操作系统时区跟你JVM的时区不一致。

你的操作系统应该是中国的时区吧,而JVM的时区不一定是中国时区,你在应用服务器的Java虚拟机添加如下配置:  -Dfile.encoding=UTF8     -Duser.timezone=GMT+08


在一个精简的Linux安装上jre,发现所有的java程序获取的时间都不是系统时间。后来发现原来是时区不对。java程序获取的时间都是GMT时间,而系统是北京时间,应该是GMT+8,刚好相差8小时。网上搜了好多资料,只有两种方法:

1、在程序中使用java的函数设定时区。

2、在启动java程序时加参数-Duser.timezone=GMT+8

不过总不能去修改每个程序的源码去设定时区吧。也不想在每个java程序启动的时候加参数,太麻烦了。就没有一劳永逸的办法了?

开始以为jre应该会有某个配置文件保存了时区的配置,结果一无所获。不过总有jre总要去系统中获取时区配置吧。于是开始想是不是java用的是 linux中的系统配置文件?于是到linux系统下/etc/sysconfig目录看时区配置。发现缺少了clock这个用于设置时区的文件。把别的 linux系统中的这个文件拷过来一试,ok。java程序的时间和系统时间一致了。看来jre是从/etc/sysconfig/clock这个文件中 获取时区信息的。

附clock文件内容:

ZONE="Asia/Shanghai"
UTC=false
ARC=false

ZONE -- 时区
UTC  -- 表明时钟设置为UTC。
ARC  -- 仅用于alpha表明使用ARC。      
分享到:
评论
2 楼 phosphory 2010-01-18  
leifeng2 写道
问题是我的系统右下角的时间是正确的,程序里面输出的日期时间晚了8个小时,这跟改注册表里面的日期时间的设置有什么内在联系吗?

你是说在windows系统上有这样的问题吧。我认为原理都是一样的,也就是说JAVA虚拟机中的时区和windows系统的时区是不一样的。如果系统时间是对的,那么就说明JVM的时区是不正确的。尝试在程序运行时加上参数“-Duser.timezone=GMT+8”
1 楼 leifeng2 2009-12-03  
问题是我的系统右下角的时间是正确的,程序里面输出的日期时间晚了8个小时,这跟改注册表里面的日期时间的设置有什么内在联系吗?

相关推荐

    jvm8源码, openjdk8

    9. **Date与Time API的改进**:Java 8对日期和时间API进行了重大改进,引入了`java.time`包,提供更直观、更强大的日期、时间、时区处理功能。 10. **模块系统**:Java 9引入了模块系统(Project Jigsaw),但...

    解决win7下使用jdk1.5,时间差8小时的问题 eclipse

    在Windows 7环境下,如果你的系统时间设置正确,但JDK显示的时间错误,那么可能是因为JDK没有正确地读取到这个信息,或者系统时区设置不包含Java能够识别的ID。 为了解决这个问题,我们可以采取以下步骤: 1. **...

    数据库查询时间没有了时分秒的解决办法

    ### 数据库查询时间没有了时分秒的解决办法 在进行数据库操作时,有时会遇到一个令人困惑的问题:查询返回的时间字段中丢失了时分秒的...这对于依赖精确时间信息的业务逻辑至关重要,有助于确保数据的准确性和一致性。

    Java分布式RMI获取服务器时间

    它允许在不同的Java虚拟机(JVM)之间透明地调用对象的方法,使得开发者可以构建分布式应用程序,即在一台机器上执行的代码可以调用在另一台机器上运行的对象的方法,仿佛它们都在同一台机器上一样。 RMI的核心概念...

    时区不正确问题1

    当你的系统时间不正确时,可能会导致各种意想不到的问题,例如日志记录时间错乱、定时任务执行失败等。针对“时区不正确问题1”,我们将深入探讨如何在C#环境下,通过调整MySQL配置、服务器时间和JRE设置来解决这个...

    mybatis-plus的自动填充时间的问题(添加到数据库的时间比当前时间多4个小时)

    例如,如果数据库服务器设置为UTC(协调世界时),而你的本地系统时间是东八区(GMT+8),那么在不进行特殊处理的情况下,时间会相差8小时,但因为插入的是UTC时间,所以比本地时间晚4小时。 2. **JVM时区设置**:...

    Linux系统Java开发JDK1.8

    4. 日期和时间API:Java 8对日期和时间API进行了彻底改造,引入了java.time包,提供更易于使用的类如LocalDate、LocalTime、LocalDateTime等,替代了过时的java.util.Date和Calendar。 在Linux上安装JDK1.8,通常...

    java mysql仓库管理系统源码+论文+课程报告.zip

    3. 数据库设计:在仓库管理系统中,可能需要创建多个表,如货物信息表、入库记录表、出库记录表等,通过合理的数据库设计可以提高数据的完整性和一致性。 三、仓库管理系统功能模块 1. 货物管理:包括货物的添加、...

    klock:Kotlin的多平台日期和时间库

    - klock的设计目标是为Kotlin的多平台项目提供一致的日期和时间操作接口,无论是在服务器端(JVM)、浏览器端(JavaScript)还是原生应用(如iOS和Android)。 2. **核心功能**: - **日期和时间操作**:klock...

    jdk-8u221-windows-x64.rar

    日期和时间API的改进也是JDK 8的一大亮点,新的`java.time`包取代了过时的`java.util.Date`和`java.util.Calendar`,提供了更直观和强大的日期时间操作。 在Windows环境下安装JDK 8u221,通常需要解压压缩包,然后...

    Java 笔记:知识点积累 (1)

    - 时区转换问题:跨时区操作时需注意夏令时(DST)的影响,可能导致时间不一致。 5. **实践应用** - 源码阅读:理解开源项目的源码能加深对Java知识的理解,如Spring框架,学习其设计模式和最佳实践。 - 工具...

    JAVA判断题含答案.doc

    方法重写发生在类继承时,子类可以重写一个父类中已有的方法,必须在返回类型和参数列表一样时才能说是重写,否则就是重载。 - **知识点**:重写(Overriding)是指子类覆盖父类中的方法,要求方法签名完全相同...

    jdk-8u40-windows-x64

    6. **新的日期时间API**:Java 8引入了全新的日期和时间API(java.time包),取代了java.util.Date和java.util.Calendar,提供了更强大且易于使用的类,如LocalDate、LocalTime、LocalDateTime等。 7. **安全性更新...

    jdk8自动安装脚本

    日期与时间API的改进是JDK8中一个实用的增强,新的`java.time`包取代了原来的`java.util.Date`和`Calendar`,提供了更加直观和易于使用的类,如`LocalDate`、`LocalTime`和`LocalDateTime`,处理日期和时间变得更加...

    jdk-1.8_191(64-bit).zip

    - **Date and Time API**:改进了日期和时间的处理,引入了`java.time`包,替代了旧的`java.util.Date`和`java.util.Calendar`。 - **默认方法**:接口中可以添加有实现的方法,增强了接口的功能性。 - **String的`...

    Mycat性能测试指南1

    在Java环境中,通常需要预热系统,即运行一段时间让JVM进行热身,这样能够提升后续测试的性能。 测试环境建议包括三台服务器:一台作为Mycat Server,一台作为MySQL数据库,另一台用作压力测试程序的执行主机。网络...

    jdk-8u73-windows-i586.exe

    - Date和Time API:用全新的java.time包替换了旧的日期和时间API,提供更强大、更易用的时间处理功能。 - Nashorn JavaScript引擎:JDK 8包含了Nashorn JavaScript引擎,使得Java代码可以与JavaScript代码交互,增加...

    常用类及方法详解.docx

    本篇文档将对其中的一些关键类,如Object、String、StringBuffer、StringBuilder、System和Date,以及它们的相关方法进行详细讲解。 1. Object Object类是所有Java类的父类,它定义了一些基本的方法,如: - `...

    Java的详细介绍

    Java是一种广泛使用的面向对象的... - **日期时间API**:取代了旧的Date和Calendar类,提供了更直观、易用的时间日期处理。 这些知识点构成了Java语言的基础和核心,掌握它们将帮助开发者编写出高效、可靠的Java程序。

Global site tag (gtag.js) - Google Analytics