時區規則發生變化時,如何同步時區

      網友投稿 1055 2022-05-29

      場景

      服務器安裝JDK時,默認會有支持JDK版本對應的時區規則。但是時區規則可能會變化的,那如何保持時區規則是最新的呢?

      TZUpdater 工具介紹

      提供的 TZUpdater 工具 允許您使用更新的時區數據更新已安裝的 Java 開發工具包 (JDK) 和 Java 運行時環境 (JRE) 軟件,以適應不同國家/地區的夏令時 (DST) 更改。Oracle 依賴于通過 IANA 的時區數據庫公開提供的時區數據。

      如果您無法使用 Oracle 最新的 JDK 或 JRE 更新版本,或者如果最新版本上的時區數據不是最新可用的,TZUpdater 工具提供了一種更新時區數據的方法,同時保持其他系統配置和依賴項不變.

      TZUpdater 工具用法

      TZUpdater 工具用于執行該工具的 JDK/JRE 軟件實例。每次執行都會修改 JDK/JRE 軟件。要將工具管理到 JDK/JRE 軟件的多個實例。

      在安裝的 JDK/JRE 軟件上運行 TZUpdater 工具之前,您必須停止操作系統上的 JDK/JRE 軟件的任何正在運行的服務。

      使用以下命令運行 TZUpdater 工具:

      java -jar tzupdater.jar options

      要成功更新時區數據,您應該確保您有足夠的權限來修改JDK_HOME /jre/lib或JRE_HOME /lib目錄。

      如果未指定任何選項,則會顯示用法消息。要更新時區數據,請使用-l或-f選項。

      -h, --help

      手動升級

      注意:

      1、在安裝的 JDK/JRE 軟件上運行 TZUpdater 工具之前,您必須停止操作系統上的 JDK/JRE 軟件的任何正在運行的服務。

      2、要成功更新時區數據,您應該確保您有足夠的權限來修改JDK_HOME /jre/lib或JRE_HOME /lib目錄。(linux系統:JRE目錄要有寫權限;windows系統:用管理員身份運行cmd)

      3、如果系統上有多個JDK/JRE ,需要將該工具用于每個JDK/JRE中(每個JDK/JRE都要操作一遍)

      4、更新成功后,要重新啟動此 JDK/JRE 實例上的應用程序服務(如果還沒更新,重啟下服務器試試)

      操作步驟:

      1、下載Oracle官方提供的tzupdater.jar包;-

      https://www.oracle.com/java/technologies/javase-tzupdater-downloads.html

      把tzupdater.jar放到java目錄bin目錄下,比如

      “C:\Program Files\JAVA\java-1.8.0-openjdk-1.8.0.201\bin\tzupdater.jar”;

      2、查看當前時區數據庫版本,以windows為例,用管理員身份運行cmd,切換到tzupdater.jar對應的目錄:

      java -jar tzupdater.jar -V

      3、在線更新,以windows為例,用管理員身份運行cmd,切換到tzupdater.jar對應的目錄:(第3種和第4種更新方式任選一種)

      java -jar tzupdater.jar -l https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz

      如圖所示,已經更新成功到了tzdata2021a版本了。

      更新后的文件是放在jre/lib/tzdb.dat ,如圖所示,它有備份歷史的版本。

      4、離線更新:要先下載最新的時區數據,-:

      https://data.iana.org/time-zones/releases/

      以windows為例,用管理員身份運行cmd。切換到tzupdater.jar對應的目錄:

      java -jar tzupdater.jar -l file:///[path]/tzdata.tar.gz

      注:

      windows建議放在C盤根目錄下,路徑目錄也不要有中文;

      用管理員身份運行cmd(需要寫權限);

      如上面的命令所示,file后面的/是3個

      5、以上執行完后,用第2步的查看當前時區數據庫版本命令,查看是否更新成功。

      服務自動化升級

      思路步驟:

      1、設置定時任務(操作系統配置就行),執行tzupdater 更新時區的命令腳本;

      2、新開一個時區服務,用來對外提供時區和夏令時規則讀取服務,獨立部署;

      3、在時區服務中,寫個同步按鈕,用來執行tzupdater 更新時區的命令腳本;

      4、在時區服務中,將timeZone數據定時寫到自定義的時區表中。提供維護功能,可以自定義新增修改刪除timeZone數據。

      此思路的好處:

      1、其他服務不需要停止服務來更新時間,直接通過調用時區服務的數據,可保證獲取到最新的時區數據;

      2、自動化的好處,避免了手動維護時區的繁瑣,人工介入有引發問題的風險;

      3、時區服務和其他業務服務是拆分的,方便未來的擴展。

      推薦相關文章

      hutool日期時間系列文章

      1DateUtil(時間工具類)-當前時間和當前時間戳

      2DateUtil(時間工具類)-常用的時間類型Date,DateTime,Calendar和TemporalAccessor(LocalDateTime)轉換

      3DateUtil(時間工具類)-獲取日期的各種內容

      4DateUtil(時間工具類)-格式化時間

      5DateUtil(時間工具類)-解析被格式化的時間

      6DateUtil(時間工具類)-時間偏移量獲取

      7DateUtil(時間工具類)-日期計算

      8ChineseDate(農歷日期工具類)

      9LocalDateTimeUtil(JDK8+中的{@link LocalDateTime} 工具類封裝)

      10TemporalAccessorUtil{@link TemporalAccessor} 工具類封裝

      其他

      要探索JDK的核心底層源碼,那必須掌握native用法

      萬字博文教你搞懂java源碼的日期和時間相關用法

      java的SimpleDateFormat線程不安全出問題了,虛竹教你多種解決方案

      源碼分析:JDK獲取默認時區的風險和最佳實踐

      時區的規則發生變化時,如何同步時區

      參考:

      TZUpdater :https://www.oracle.com/java/technologies/javase/tzupdater-readme.html

      IANA時區數據版本:https://data.iana.org/time-zones/releases/

      JRE 軟件中的時區數據版本:https://www.oracle.com/java/technologies/tzdata-versions.html

      Java JDK

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:傾聽城市生態數據的律動
      下一篇:linux之cat命令詳解
      相關文章
      亚洲精品人成在线观看| 亚洲AV日韩综合一区| 亚洲精品无码专区久久同性男| 亚洲一卡2卡3卡4卡国产网站| 亚洲尹人九九大色香蕉网站| 亚洲日韩v无码中文字幕| 国产精品V亚洲精品V日韩精品| 亚洲国产精品综合久久网络| 亚洲国产成人五月综合网 | 亚洲午夜电影在线观看高清| 亚洲最大免费视频网| 亚洲国产品综合人成综合网站| 亚洲成a人片毛片在线| 亚洲va精品中文字幕| 国产亚洲中文日本不卡二区| 亚洲色偷偷综合亚洲av78| 91亚洲国产成人久久精品| 亚洲免费中文字幕| 中文字幕精品三区无码亚洲| 亚洲精品无码专区| 国产亚洲成在线播放va| 亚洲日韩在线中文字幕第一页| 亚洲中文字幕无码久久精品1 | 亚洲人成未满十八禁网站| 亚洲第一成年网站视频| 亚洲福利精品一区二区三区| 亚洲午夜激情视频| 久久久久久亚洲精品| 亚洲视频中文字幕| 国产成人精品亚洲日本在线| 亚洲日本VA午夜在线电影| 亚洲高清偷拍一区二区三区| 亚洲综合色婷婷七月丁香| 亚洲AV日韩精品久久久久| 亚洲神级电影国语版| 亚洲色大成网站WWW国产| 一区二区三区亚洲视频| 亚洲乱码无码永久不卡在线| 亚洲四虎永久在线播放| 亚洲av乱码一区二区三区香蕉 | 亚洲av日韩av永久在线观看 |