2013-05-31 44 views
1

當運行下面線,輸出TimeZone.getDefault()方法

System.out.println(java.util.TimeZone.getDefault()); 

我得到了以下的輸出。

sun.util.calendar.ZoneInfo[id="Asia/Calcutta", 
    offset=19800000, 
    dstSavings=0, 
    useDaylight=false, 
    transitions=6, 
    lastRule=null] 

System.out.println(Locale.getDefault());

`en_US` 

我的疑問是

Locale怎麼可能en_US,當我Zone idAsia/Calcutta

在第一輸出

,我不明白什麼是offset, dstSavings, useDaylight, transitions and rules ?

能夠在理解這些人的幫助。

在此先感謝...

回答

2

Locale無關與TimeZone,你可以設置你的法語的澳大利亞計算機,如果你想...你將不再需要法國時區爲。

要了解更多關於的時區,你應該閱讀的論文:

useDaylightTime

public abstract boolean useDaylightTime() 

查詢此時區是否使用夏令時。

什麼是Daylight Saving Time

getDSTSavings

public int getDSTSavings() 

返回要添加到本地標準時間以獲取本地掛鐘時間的時間量。

所以這是UTC + TimeZone +(DSTSavings - 0或1小時)之間的差異。如果您目前處於DST儲蓄模式,將返回1小時。

規則

規則意味着日期時,DST是積極和日期時,它是沒有更多的。更多信息SimpleTimeZone

轉變

這個陣列描述了該時區的GMT偏移的躍遷,包括原始偏移的變化和夏令時更改。長整數由四位字段組成。

最重要的52位字段代表格雷戈里昂1970年1月1日00:00:00格林威治時間 毫秒內的過渡時間。 接下來的4位字段是保留的,必須爲0. 接下來的4位字段是一個索引值,用於偏移[]以獲得過渡時的夏令時量。如果此值爲零,則意味着 沒有夏令時,而不是索引值零。 最低有效4位字段是一個索引值,用於在轉換時偏移總GMT偏移的[]。

如果此時區未遵守夏令時並且從未在過去更改過任何GMT偏移量,則此值爲空。

+0

謝謝,但是,什麼是「stSavings,useDaylight,轉換和規則」? @Alexandre Lavoie – MaheshVarma

+0

@MaheshVarma現在一切都回復了! –

+0

謝謝@Alexandre Lavoie – MaheshVarma

1

檢查 this question瞭解Locale.getDefault()實際如何工作。

至於你的輸出System.out.println(java.util.TimeZone.getDefault());

  1. DST儲蓄:基本實現對使用的時區是 不
  2. 偏移夏令時間,0 時區返回3600000(1小時):這是您的時區與GMT的偏移量。對於印度, 它是5小時30分,這是19800000毫秒
  3. UseDaylight:這表明此時區沒有日光調整 。
  4. 轉場:這指的是時區的夏令時轉換 。
  5. LastRule:返回代表上一次GMT 偏移量和DST計劃的SimpleTimeZone對象,如果該時區未觀察到,則返回nullDST。

希望這會有所幫助。