Java 8:如何从ZoneOffset

时间:2015-10-04 09:12:58

标签: java date java-8

我正在阅读API for the ZoneId课程。它声明有三种ID:

  1. 派生自ZoneOffset
  2. 具有某种形式前缀的偏移式ID。例子:

    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");
    
  4. 但是第一种正确的语法是什么?文档说明

      

    [来自ZoneOffset的ID]由'Z'和以'+'或' - '开头的ID组成。

    我应该使用String和ZoneOffset对象的组合来创建第一种ZoneId

2 个答案:

答案 0 :(得分:11)

实际上有两个问题需要回答

1)第一种语法是什么?

就是这样:

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

here您可以找到完整列表

  • Z - for UTC
  • + H
  • + HH
  • + HH:MM
  • -hh:毫米
  • + HHMM
  • -hhmm
  • + HH:MM:SS
  • -hh:MM:SS
  • + HHMMSS
  • -hhmmss

我错误地认为那是

  

'Z' AND 以“+”或“ - ”

开头的ID

意味着始终需要Z前缀(以构成Z+02:00之类的内容)。我认为 OR 会更合适。

2)String和ZoneOffset对象的[需要]组合是什么?

无需组合,您可以使用字符串或ZoneOffset对象:

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

答案 1 :(得分:0)

结合" UTC"和ZoneOffset对象来获取ZoneId

ZoneId z = ZoneId.ofOffset("UTC",ZoneOffset.UTC);

要获得更好的说明,请访问此链接http://www.java2s.com/Tutorials/Java/java.time/ZoneId/2180__ZoneId.ofOffset_String_prefix_ZoneOffset_offset_.htm