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:00user.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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【超详细】手把手教你ElasticSearch集群搭建

    【超详细】手把手教你ElasticSearch集群搭建1.ElasticSearch快速入门1.1.基本介绍ElasticSearch特色Elasticsearch是实时的分布式搜索分析引擎,内部使用Lucene做索引与搜索实时性:新增到ES中的数据在1秒后就可以被检索到,这种新增数据对搜索的可见性称为“准实时搜索”分布式:意味着可以动态调整集群规模,弹性扩容集群规模:可以扩展到上百台服务器,处理PB级结构化或非结构化数据各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作Lucene是Ja

    2022年10月13日
    0
  • 怎么从安卓设备转移数据到苹果_安卓换苹果如何转移数据?

    怎么从安卓设备转移数据到苹果_安卓换苹果如何转移数据?展开全部可以用网盘工具来操作下。比方说用百度网盘,找到里面的“手机备份32313133353236313431303231363533e58685e5aeb931333431373266”功能,然后将数据都备份好。后面再到苹果手机上,安装一个百度网盘,然后将数据再保存到手机上就行了。手机上的数据要是不小心删除了,那可以通过强力恢复精灵找回(iPhone专用)。二、苹果手机数据转移到新iPhone1…

    2022年9月18日
    1
  • pycha2021.5激活码[在线序列号][通俗易懂]

    pycha2021.5激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    55
  • 移动端App开发流程管理

    移动端App开发流程管理前言刚刚做完一个项目,值得总结,在此记录一下。   欢迎加入学习小组QQ群: 156958554。项目流程一款应用的开发大体流程如下:1、项目立项:产品经理2、需求确认:产品经理(业务逻辑说明文档)3、业务确认:产品经理,技术经理,架构师4、业务架构:技术经理,架构师(业务流程文档)5、UI确认:产品经理,设计人员,开发人员全体6、

    2022年5月27日
    32
  • Mysql和Hash作为数据库索引的优略

    Mysql和Hash作为数据库索引的优略1.hash表只能匹配是否相等,不能实现范围查找select * from xx where id > 23; 这时就没办法索引了2.当需要按照索引进行order by时,hash值没办法支持排序select * from xx order by score desc;如果score为建立索引的字段,hash值没办法辅助排序。3.组合索引可以支持部分索引查询,如(a,b,c)的组合索引,查询中只用到了阿和b也可以查询的,如果使用hash表,组合索引会将几个字段合并hash,没办法支持部分索引

    2022年8月9日
    4
  • ArcGIS二次开发入门 一

    ArcGIS二次开发入门 一ArcGIS二次开发入门一

    2022年6月24日
    26

发表回复

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

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