时区配置
在linux中與時間相關的文件有
/etc/localtime/etc/timezone ##RHEL 7中找不到該文件其中,/etc/localtime是用來描述本機時間,而 /etc/timezone是用來描述本機所屬的時區。
修改本機時區
rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime在/usr/share/zoneinfo下存放著不同時區格式的時間文件,執行以上命令,可以將本機時間調整至目標時區的時間格式。?
?
Java讀取的時區與本機date出來的時區不同
在Linux中,有一些程序會自己計算時間,不會直接采用帶有時區的本機時間格式,會根據UTC時間和本機所屬的時區等計算出當前的時間。?
比如jdk應用,時區為“Etc/UTC”,本機時間改為北京時間,通過java代碼中new 出來的時間還是utc時間。
Java在沒有TZ環境變量時取的是 /etc/sysconfig/clock中的時時區。
Sun上面有和我這種情況相關的bug - Default timezone is incorrectly set occasionally on Linux(http://bugs.sun.com/view_bug.do?bug_id=6456628), 里面描述了java vm取的默認timezone的算法:
1)如有環境變量 TZ設置,則用TZ中設置的時區
2)在 /etc/sysconfig/clock文件中找 "ZONE"的值
3)如果2)都沒,就用/etc/localtime 和 /usr/share/zoneinfo 下的時區文件進行匹配,如找到匹配的,就返回對應的路徑和文件名。
參考:
1、https://www.cnblogs.com/mnstar/p/8567402.html
2、https://blog.csdn.net/gezilan/article/details/79422864
3、https://my.oschina.net/huawu/blog/4646
posted on 2019-01-29 17:29 破霜風 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/victorfrost/p/10335018.html
總結
- 上一篇: 信号与系统 拉普拉斯变换
- 下一篇: UDS协议-代码完整性测试