亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在java中更改操作系統時區?

如何在java中更改操作系統時區?

拉莫斯之舞 2023-07-13 17:40:46
我的 java 應用程序在 Ubuntu 上運行,我有一個需要從 java 更改操作系統時區的用例。我嘗試使用 Joda 和 Java.util.Timezone 來實現這一目標。但看起來,他們只是改變了 jvm 時區,而不是實際的操作系統。因此,在服務器/機器重新啟動時,我將使用舊時區。有什么方法可以從java實現這一點,或者我需要依賴Runtime.getRuntime().exec(“os命令”)?注意:在這種情況下,時區將是用戶特定的(用戶將定義自己的時區)。不同的實例可能有不同的時區。
查看完整描述

3 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

假設您擁有 root 權限,這將更改 Linux 中的操作系統時區:


import java.io.File;

import java.nio.file.Files;

import static java.nio.file.StandardCopyOption.COPY_ATTRIBUTES;

import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;? ??


// ...


String zone = "Asia/Tokyo";

File source = new File("/usr/share/zoneinfo/" + zone);

File dest = new File("/etc/localtime");

Files.copy(source.toPath(), dest.toPath(), REPLACE_EXISTING, COPY_ATTRIBUTES);

請注意,更改操作系統默認時區不會影響當前進程。另請注意,這不可移植。


創建符號鏈接可能會更好,但兩者都應該有效。


要永久更改單個用戶的時區,請export TZ='Asia/Tokyo'寫入啟動腳本,例如.bashrc. 您不需要為此提升權限。


查看完整回答
反對 回復 2023-07-13
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

JVM維護自己的默認時區,與主機操作系統時區設置無關。

大多數 Java 實現在啟動時都默認使用主機操作系統當前的默認時區?;蛘撸梢詫祩鬟f給 JVM 啟動程序以指定另一個時區。最后,調用TimeZone.setDefault立即更改該 JVM 中運行的所有應用程序的所有線程中的所有代碼的當前默認時區。

我需要從 java 更改操作系統時區。

無法使用捆綁的 Java 類。據我所知,沒有任何 Java 實現能夠為 Java 應用程序提供這種功能。

您也許能夠從 Java 中調用一些本機應用程序或實用程序,這些應用程序或實用程序可能會更改主機操作系統時區設置。但您必須找到這樣的實用程序,并設置從 Java 到本機代碼的橋接調用?;蛘吣梢詧绦?shell 腳本來更改操作系統設置。

至于 Java 代碼中的日期時間處理,您不應依賴主機操作系統或 JVM 的默認時區。我建議始終將可選ZoneId(或ZoneOffset) 傳遞給各種日期時間方法。省略該參數會導致隱式依賴 JVM 當前的默認時區。最好指定您想要/預期的時區。

ZoneId?z?=?ZoneId.of(?"Africa/Tunis"?)?;
ZonedDateTime?zdt?=?ZonedDateTime.now(?z?)?;

順便說一下,請注意Joda-Time項目現在處于維護模式。它的創建者 Stephen Colebourne 隨后在JSR 310 定義的java.time類中創建了它的后繼者,現在與 Java 8 及更高版本捆綁在一起。


查看完整回答
反對 回復 2023-07-13
?
UYOU

TA貢獻1878條經驗 獲得超4個贊

這是可能的答案:

Calendar gmtTime = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
System.out.println(gmtTime.getTime());


查看完整回答
反對 回復 2023-07-13
  • 3 回答
  • 0 關注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號