Java 8 : how to derive a ZoneId from ZoneOffset

标签 java date java-8

我正在阅读 API for the ZoneId类(class)。它指出 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");
    

但是第一类的正确语法是什么?文档说

[ID from ZoneOffset] consists of 'Z' and IDs starting with '+' or '-'.

我应该使用什么字符串和 ZoneOffset 对象组合来创建第一种 ZoneId

最佳答案

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

1) 第一种的正确语法是什么?

就是这样:

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

here你可以找到完整的列表

  • Z - 代表 UTC
  • +h
  • +嗯
  • +hh:mm
  • -hh:mm
  • +嗯嗯
  • -嗯
  • +hh:mm:ss
  • -hh:mm:ss
  • +hhmmss
  • -hhmmss

我错了

'Z' AND IDs starting with '+' or '-'

意味着您总是需要一个Z 前缀(以组成类似Z+02:00 的内容)。我认为 OR 会更合适。

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

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

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

关于Java 8 : how to derive a ZoneId from ZoneOffset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32931871/

相关文章:

html - typescript 错误〜类型void中不存在属性〜

java - 为什么这可以在 Java 7 下编译,但在 Java 8 下不行?

recursion - Java 8 : Copy directory recursively?

java - 这个线程程序每次都会向我显示不同的答案

java - 需要一个正则表达式来提取两个 "delimiting"字符串之间的字符串

c++ - 以毫秒为单位的时间戳在 C++ 中给出了 10 位数字?

Javascript 日期 |将日期设置为一年的最后一秒

java - 如何防止Java为较新的SDK编译部分代码?

Java - 通过数组存储的碰撞检测碰撞

java - 为什么MANIFEST.MF和类文件中的JDK版本不同