如何正確設(shè)置JVM TimeZone我正在嘗試運(yùn)行Java程序,但它采用默認(rèn)的GMT時(shí)區(qū)而不是OS定義的時(shí)區(qū)。我的JDK版本是1.5,操作系統(tǒng)是Windows Server Enterprise(2007)Windows指定了一個(gè)中央時(shí)區(qū),但是當(dāng)我運(yùn)行以下程序時(shí),它會(huì)給我一個(gè)GMT時(shí)間。import java.util.Calendar;public class DateTest{
public static void main(String[] args)
{
Calendar now = Calendar.getInstance();
System.out.println(now.getTimeZone());
System.out.println(now.getTime());
}}這是輸出sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]Mon Mar 22 13:46:45 GMT 2010請(qǐng)注意,我不想從應(yīng)用程序設(shè)置時(shí)區(qū)。我希望JVM使用的時(shí)區(qū)應(yīng)該是操作系統(tǒng)中指定的時(shí)區(qū)。(我沒有發(fā)現(xiàn)其他具有1.4版JDK和Microsoft Server 2003的服務(wù)器的問題)。任何想法都將受到高度贊賞。
3 回答

一只萌萌小番薯
TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
你可以傳遞JVM這個(gè)參數(shù)
-Duser.timezone
例如
-Duser.timezone=Europe/Sofia
這應(yīng)該可以解決問題。設(shè)置環(huán)境變量TZ也可以在Linux上實(shí)現(xiàn)。

拉莫斯之舞
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
您還可以使用以下代碼在代碼中設(shè)置默認(rèn)時(shí)區(qū)。
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
給你的
TimeZone.setDefault(TimeZone.getTimeZone("Europe/Sofia"));

SMILET
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
上面接受的答案是:
-Duser.timezone="Europe/Sofia"
完全不適合我。當(dāng)我沒有關(guān)于參數(shù)的引號(hào)時(shí),我只能成功更改我的時(shí)區(qū):
-Duser.timezone=Europe/Sofia
添加回答
舉報(bào)
0/150
提交
取消