java 日志时间错误

java时区错误解决方法问题参考链接电脑上所有java应用、项目时间都不对。核心业务系统启动后日志时间和当前系统时间差11个小时30分钟,电脑用的是云桌面系统有严格的权限控制,找相关人和同事弄了几次没好;都知道是时区问题,但没注意到系统桌面右下角的提示。最后解决方法很简单,先说解决方法。(出现问题的主机是无法连接公网的,文件也无法外传,图片都是照片;)解决方法在windows…

大家好,又见面了,我是你们的朋友全栈君。

java 时区错误

电脑上所有 java 应用、项目时间都不对。 核心业务系统启动后日志时间和当前系统时间差11个小时30分钟,电脑用的是云桌面系统有严格的权限控制,找相关人和同事弄了几次没好;都知道是时区问题,但没注意到系统桌面右下角的提示。最后解决方法很简单,先说解决方法。

(出现问题的主机是无法连接公网的,文件也无法外传,图片都是照片;)

解决方法

1.第一种: 在 windows 桌面右下角点击时间选择正确的时区即可
在这里插入图片描述
2. 第二种: 直接在启动java应用时添加 -Duser.timezone=Asia/Shanghai。
在这里插入图片描述
刚开始用的这个方法,后来每次启动一个 IDEA/JBoss/MyEclipse/Jetty 等都要设置这个变量,好烦。还是得去看看怎么回事

问题

我先用 jvisualvm 看了一下 发现系统属性最后一项是 user.timezone=America/Bahia 而别人的都是 user.timezone=GMT+08:00 或user.timezone=Asia/Shanghai。
然后我写了一段代码看 java 应用的 env 和 properties ,及 时间是从 jdk 哪个类来获得的。
看testTimeZone方法
看testTimeZone方法,断点进去后最后到一个关键方法getSystemTimeZoneID()
(下面的图片是修改正确后的拍照截图,没拍错误的)
在这里插入图片描述
getSystemTimeZoneID()走完后 zoneID 就确定了,而getSystemTimeZoneID() 是个 native 方法,调试运行的话会直接到 String 类 使用 byte[] 和指定的 编码字符集确定值。网上搜了一下 源码 大概明白了 jvm 获取时区的策略,
TimeZone 这个链接就有简要说明。现在可以确定不是 java 或 jdk 的问题而是系统问题。 在搜索的过程中有人说是注册表的问题,去按照相应位置看看,设置也正常
在这里插入图片描述
在这里插入图片描述
然后就在页面点了点链接 “无法识别您当前的时区” ,点了我的桌面右下角一看,也有这问题。点击选择正确的时区后,重启java应用,使用 jvisualvm 查看,系统变量设置为user.timezone=GMT+08:00时间也正常了。
问题最后解决的很简单,只是一开始没去系统时间那点点看。
至于为什么错误的会是 user.timezone=America/Bahia 等找到完整的 native 方法 getSystemTimeZoneID() 搭个环境,再打断点看看。

参考链接

https://www.jb51.net/os/windows/293509.html
http://www.xitongtiandi.net/wenzhang/win7/2015-10-05/3300.html
https://blog.51cto.com/2005713/698032
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6456628
还有一个链接是 getSystemTimeZoneID() 源码,现在找不见了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127352.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 传统的行存储和(HBase)列存储的区别「建议收藏」

    传统的行存储和(HBase)列存储的区别「建议收藏」1为什么要按列存储列式存储(Columnarorcolumn-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表(翻译不好,直接抄原文了):Ø Row-basedstoragestoresatableinasequenceofrows.Ø Column-basedstorag

    2022年7月16日
  • 水果篮一般装几种水果_one step closer水果篮子

    水果篮一般装几种水果_one step closer水果篮子904.水果成篮题目描述题目链接:904水果成蓝你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组fruits表示,其中fruits[i]是第i棵树上的水果种类。你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果:你只有两个篮子,并且每个篮子只能装单一类型的水果。每个篮子能够装的水果总量没有限制。你可以选择任意一棵树开始采摘,你必须从每棵树(包括开始采摘的树)上恰好摘一个水果。采摘的水果应当符合篮子中的水果类型。

    2022年9月2日
  • psp坏点修复(psp贴吧)

    psp坏点&鉴别液晶坏点  暗点 亮点PC上挑选液晶LCD,借助第3方软件 例如NOKIA MONITOR TESTER 需要指出的是,亮点,暗点,坏点问题是液晶屏幕不可避免的先天性"生理缺陷",一般情况下,3个以下的"点"都是可以接受的.亮点:在黑屏幕情况下单纯地显示一种颜色的点,通常表现为在RED,GREEN,BLUE3种纯色模式下均显示白色.暗点:在R G B3种纯色模式下,均显示为黑色或不

    2022年4月15日
  • 八种排序算法的时间复杂度复杂度

    八种排序算法的时间复杂度复杂度https://www.cnblogs.com/dll-ft/p/5861210.html 转载1、稳定性归并排序、冒泡排序、插入排序。基数排序是稳定的选择排序、快速排序、希尔排序、堆排序是不稳定的 2、时间复杂度最基础的四个算法:冒泡、选择、插入、快排中,快排的时间复杂度最小O(n*log2n),其他都是O(n2)排序法 平均时间 最差情形 稳定度…

    2022年5月14日
  • ACM中Java输入输出[通俗易懂]

    ACM中Java输入输出[通俗易懂]最初写算法时,是用Scanner的。因为当时接触的测试数据基本都是以算法的复杂度为主,但是后面遇到大量的输入数据时。发现Scanner远远不能满足条件。下面列出几种常用的输入输出方式。(输出统一用printwriter,系统的system.out太慢,结尾要释放缓存才能输出,不然数据放在缓存中输不出来)1:Scanner这个类最慢,但是最好用,因为这个类没有缓存处理,所以io方面大量输入…

    2022年5月18日
  • phpmyadmin 自动登录的办法

    phpmyadmin 自动登录的办法

    2021年10月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号