返回顶部
首页 > 资讯 > 操作系统 >JDK时区TimeZone与操作系统不一致怎么办
  • 908
分享到

JDK时区TimeZone与操作系统不一致怎么办

2023-06-03 01:06:02 908人浏览 八月长安
摘要

这篇文章主要介绍jdk时区TimeZone与操作系统不一致怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!【背景】一台windows服务器的迁移工作,涉及操作系统、应用以及数据库,其中:  1.操作系统

这篇文章主要介绍jdk时区TimeZone与操作系统不一致怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

【背景】一台windows服务器的迁移工作,涉及操作系统、应用以及数据库,其中:
  1.操作系统由Windows Server 2003--->Windows Server 2008
  2.数据库oracle 10.2.0.4--->Oracle 11.2.0.3
  3.应用迁移本在本篇博文的讨论范围
 之前方案经过几轮评审,该改进地方修改了多次。测试环境也进行了多次测试。自认为在生产环境变更会一切顺利,万无一失,自信满满,但很快被现实狠狠的抽了一巴掌。经梳理,碰到的问题主要有两个,以下计划分两篇进行总结归纳,若有错误,欢迎各位大神指正。
  服务器迁移完成后,启动定时作业出现了一个异常现象,该作业理应生成T-1日文件不知为何文件变成了T-2日。出现问题的时候,开发人员并不在现场,本着先不麻烦别人的原则。第一反应就是有可能是数据库迁移造成的。
 为排除数据库方面的问题,我们查询了常用时间变量sysdate,systimestamp,localtimestamp以及current_timestamp,发现输出都和自然时间相同。

  1. SELECT sysdate FROM dual;

  2. SYSDATE

  3. -----------------

  4. 20170409 07:56:19

  5. SELECT systimestamp FROM dual;

  6. SYSTIMESTAMP

  7. ---------------------------------------------------------------------------

  8. 09-APR-17 07.56.52.311941 AM +08:00

  9. SELECT localtimestamp FROM dual;

  10. LOCALTIMESTAMP

  11. ---------------------------------------------------------------------------

  12. 09-APR-17 07.59.04.507493 AM

  13. SELECT current_timestamp FROM dual;

  14. CURRENT_TIMESTAMP

  15. ---------------------------------------------------------------------------

  16. 09-APR-17 07.59.17.414758 AM +08:00

  那看来和数据库无关?正在犹豫的时候,再次启动定时作业的时候发现执行结果正确了,生成了T-1日的文件,且文件内容也无异常。奇怪,不过定时作业总算执行正常了,由于有其他事情要忙,这个事情就没有再深入分析。
  悲催的是,第二天问题又重现了,且情况和前一天几乎一样:刚开始作业异常,分析了一段时间,再次重启作业又正常了。什么情况?看来这个不是偶发现象,要仔细深入的研究个明白了。在分析过程我们发现了一个非常有趣的现象:作业若在8点之前执行就会异常,一过8点作业执行正常。难道是时区造成的?不对啊,前面已经查询已经确认了,数据库时区和时间都没问题。为了进一步确认数据库时区正常,还是查看一下dbtimezone变量吧。

点击(此处)折叠或打开

  1. SELECT dbtimezone FROM dual;

  2. DBTIME

  3. ------

  4. +08:00

   基本排查了数据库的原因造成的,作为DBA的我不禁松了一口气。下面的分析可以放松些了,不用提心吊胆啦,哈哈。既然怀疑时区造成的,那看看是不是操作系统的时区问题。但非常遗憾经确认操作系统时区设置也是正确的 :东8区。经过一番确认和排查,始终未发现服务器、数据库参数设置的问题,找开发要代码吧。代码非常简单,截取部分有用内容如下:

点击(此处)折叠或打开

  1. String strCreDate = new java.sql.Date(new java.util.Date().getTime()-86400000).toString();

   具体生成T-1日还是T-2日的文件,由strCreDate变量决定的。那看来变量strCreDate的值有问题。我们分别做了一组实验:8点前strCreDate的值为T-2,但8点后该值就变成了T-1.为清楚的看到JDK时区情况,写了一个非常简单HelloWorld代码,如下: 

点击(此处)折叠或打开

  1. import java.util.TimeZone;

  2. import java.sql.Date;

  3. public class HelloWorld {

  4.     public static void main(String[] args) {

  5.     System.out.print("当前的默认时区为");

  6.     System.out.println(TimeZone.getDefault());                            //输出当前默认时区 

  7.     final TimeZone zone = TimeZone.getTimeZone("GMT+8");                  //获取中国时区

  8.     TimeZone.setDefault(zone);                                            //设置时区

  9.     System.out.println(TimeZone.getDefault());                            //输出验证 

  10.     }

  11. }

   第一个输出结果为:
JDK时区TimeZone与操作系统不一致怎么办
 第二个输出结果为:
JDK时区TimeZone与操作系统不一致怎么办
    发现了什么了吗?虽然操作系统的时区为东8区,但是jdk获取的时区不是东8区,缺是UTC,因此造成了差8个小时的现象,即8点前作业异常,8点后作业又正常了。问题已经找出来了,就是jdk的问题,解决方案就迎刃而解了。具体办法如下:
 在下面四个目录(Java\jre6\lib\zi\Etc、Java\jre6\lib\zi、Java\jdk1.6.0_18\jre\lib\zi\Etc、Java\jdk1.6.0_18\jre\lib\zi)下找到GMT文件备份一下,然后复制一份GMT-8并重命名为GMT,复制完毕,重新运行一下java程序问题即可解决!
    按照上述方法处理后,再次运行HelloWorld命令,输出正常了。次日观察作业也正常了。至此问题处理完毕。

以上是“JDK时区TimeZone与操作系统不一致怎么办”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: JDK时区TimeZone与操作系统不一致怎么办

本文链接: https://lsjlt.com/news/231926.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JDK时区TimeZone与操作系统不一致怎么办
    这篇文章主要介绍JDK时区TimeZone与操作系统不一致怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!【背景】一台Windows服务器的迁移工作,涉及操作系统、应用以及数据库,其中:  1.操作系统...
    99+
    2023-06-03
  • 分时操作系统与批处理操作系统的区别是什么?
    1. 任务管理 分时操作系统:采用多任务机制,允许多个程序同时运行在计算机上。每个任务都分配一个时间片,在该时间片内,任务独占地使用处理器。当一个任务的时间片用完后,它将被暂时挂起,而另一个任务将获得执行权限。这种交替调度方式使多个任...
    99+
    2024-03-05
    分时操作系统 批处理操作系统 任务管理 用户交互 资源分配
  • 奇怪的Oracle 11gRAC日志记录的时间与操作系统时间不一致问题
    环境: suse 11sp4 Oracle 11.2.0.4 RAC 安装完成软件和补丁后,检查时间,发现两个主机时间相差5个小时。 调整系统时间,调整两台主机为同一时间点。 date -s '201...
    99+
    2024-04-02
  • 怎么解决mysql5.7日志时间与系统时间不一致问题
    这篇文章主要介绍“怎么解决mysql5.7日志时间与系统时间不一致问题”,在日常操作中,相信很多人在怎么解决mysql5.7日志时间与系统时间不一致问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2024-04-02
  • 怎么解决vsftpd下显示的时间与系统时间不一致
    这篇文章主要介绍怎么解决vsftpd下显示的时间与系统时间不一致,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vsftpd在安全性、高性能及稳定性三个方面有上佳的表现。它提供的主要功能包括虚拟IP设置、虚拟用户、St...
    99+
    2023-06-16
  • 操作系统与实时操作系统:一个速度与可靠性的对比
    速度 一般的操作系统,例如 Windows、macOS 和 Linux,被设计为多任务系统,能够同时处理多个进程。它们通过使用虚拟内存来实现这一目标,虚拟内存是一种将内存分页到磁盘的技术。虽然这可以提高效率,但在进程之间切换时会增加开销,...
    99+
    2024-04-02
  • crontab执行时间与系统时间不一致问题解决
    前言 在linux中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。 cron的配置文件称为“crontab...
    99+
    2022-06-04
    crontab执行时间 crontab 时间 crontab时间设置
  • 解决docker中mysql时间与系统时间不一致问题
    最近在Docker中装mysql时,发现数据库时间与系统时间相差8个小时。 linux服务器时间: 进入mysql,输入date如下 发现两者时区不同。因为mysql容器是在do...
    99+
    2024-04-02
  • solaries操作系统怎么安装64位JDK
    这篇文章主要介绍“solaries操作系统怎么安装64位JDK”,在日常操作中,相信很多人在solaries操作系统怎么安装64位JDK问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”solaries操作系统怎...
    99+
    2023-06-02
  • Mysql 数据库时间与系统时间不一致问题排查
    NO.1 产生问题 在我们学习中使用到sysdate这个函数时,发现查出来的日期时间与当前的正确时间不一致,相差8个小时左右,为什么会产生这个问题?又该如何解决? – 在数据库中使用sysdate()...
    99+
    2023-09-18
    职场和发展 程序人生 测试用例 python 压力测试
  • 如何解决docker中mysql时间与系统时间不一致问题
    这篇文章将为大家详细讲解有关如何解决docker中mysql时间与系统时间不一致问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。最近在Docker中装mysql时,发现数据库时间与系统时间相差8个小时。...
    99+
    2023-06-22
  • 操作系统与实时操作系统的融合:创造下一代计算体验
    融合的好处 操作系统和实时操作系统的融合提供了以下好处: 实时响应:RTOS 提供确定性响应,确保对关键任务事件的快速处理。与 RTOS 融合后,OS 可以获得这种实时性,从而为需要即时性和可靠性的应用提供支持。 高吞吐量:OS 能够处...
    99+
    2024-04-02
  • 微信域名与配置不一致怎么办
    微信域名与配置不一致的解决方法:1.浏览器进入微信公众平台;2.点击“基本配置”选项;3.点击“修改配置”按钮;4.将URL选择修改为现使用的链接,填写Token,点击“随机生成”即可;微信域名与配置不一致的解决方法首先,在浏览器中进入并登...
    99+
    2024-04-02
  • redis与数据库数据不一致怎么办
    解决 redis 与数据库数据不一致的方法为:定期同步数据使用事务使用 redis 的 pipelining避免在 redis 中存储关键数据监控和警报使用数据验证 Redis 与数据...
    99+
    2024-04-08
    redis 数据访问
  • LINUX操作系统死机怎么办
    本篇内容主要讲解“LINUX操作系统死机怎么办”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“LINUX操作系统死机怎么办”吧!LINUX死机后可以 Ctrl+Alt+F1,Root登录,用top...
    99+
    2023-06-10
  • Linux操作系统找不到网卡驱动怎么办
    本篇内容主要讲解“Linux操作系统找不到网卡驱动怎么办”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux操作系统找不到网卡驱动怎么办”吧! 安装网卡机器太新,以至于现有的Linux版本无...
    99+
    2023-06-10
  • MySQL慢查询日志时间与系统不一致的解决方法
    如何解决MySQL慢查询日志时间与系统时间相差8小时?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在对慢查询进行查看的时候发现时间不对,正好与...
    99+
    2024-04-02
  • 操作系统与区块链:一个影响数字时代的革命性联盟
    1. 增强安全性 区块链的分布式账本技术为操作系统提供了额外的安全层。通过将数据存储在多个节点上,区块链使黑客难以破坏或篡改系统。这使得基于区块链的操作系统非常适合处理敏感数据或金融交易。 2. 提高透明度 区块链的透明性特性与操作系统的...
    99+
    2024-03-15
    操作系统与区块链
  • node.JS md5加密中文与php结果不一致怎么办
    这篇文章主要为大家展示了“node.JS md5加密中文与php结果不一致怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“node.JS md5加密中文与p...
    99+
    2024-04-02
  • Win8系统怎么添加不同时区的时钟
      有些用户需出差到国外,如果在电脑上添加上不同时区的时钟的话,就可常出差的用户就非常方便了。那么Win8系统怎么添加不同时区的时钟?下面小编就为大家介绍win8系统中添加不同时区时钟的方法,以方便不少有跨国联系的朋友。...
    99+
    2023-06-06
    Win8系统 时区的时钟 时钟 时区 系统 Win8
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作