2015-10-04 113 views
4

我正在閱讀API for the ZoneId類。它指出,有三個tipes ID的:Java 8:如何從ZoneOffset派生ZoneId

  1. 從ZoneOffset
  2. 某種形式的前綴的偏移式標識的。示例:

    ZoneId.of("GMT+2"); 
    ZoneId.of("UTC"); 
    ZoneId.of("UT+01:00"); 
    
  3. 基於區域的。例子:

    ZoneId.of("Asia/Aden"); 
    ZoneId.of("Etc/GMT+9"); 
    ZoneId.of("Asia/Aqtau"); 
    

但是,什麼是第一種正確的語法?文檔說明

[來自ZoneOffset的ID]由'Z'和以'+'或' - '開頭的ID組成。

什麼是字符串的組合和ZoneOffset對象我應該用它來創建第一類ZoneId

+0

呃......也許我錯過了點,但文檔中明確指出,前綴必須是當中的一個「」 GMT「,」UTC「或」UT「或」「和ZoneOffset.of()工廠方法採用一個偏移ID,其格式也是明確指定的,所以如果你想創建UTC + 2,我想你應該使用「UTC」作爲前綴,「+2」作爲偏移ID到ZoneOffset.of()? –

+1

@ZaphodBeeblebrox對於第二種ID是正確的。我編輯了我的問題以包含部分答案,它對於讀者在未來 –

+0

@LuigiCortese請張貼您的o wn回答爲答案。完全可以接受和鼓勵回答你自己的問題。 –

回答

9

實際上有兩個問題在這裏得到解答

1)什麼第一種是正確的語法嗎?

這是它:

ZoneId z; 
    z = ZoneId.of("Z"); //for UTC 
    z = ZoneId.of("+02:00"); 
    z = ZoneId.of("-02:00"); 

here你可以找到完整的列表

  • ž - 爲UTC
  • + H
  • + HH
  • + HH:MM
  • -hh:mm
  • + HHMM
  • -hhmm
  • + HH:MM:SS
  • -hh:mm:ss的
  • + HHMMSS
  • -hhmmss

我錯thougt該

'Z'AND以'+'或' - '開頭的ID

意味着你總是需要Z前綴(組成像Z+02:00)。我認爲會更合適。

2)String和ZoneOffset對象的[需要]組合是什麼?

沒有必要,你可以使用一個字符串或ZoneOffset對象組合:

ZoneId z; 
    z = ZoneId.of("+02:00"); 
    z = ZoneId.of(ZoneOffset.of("+02:00").getId());