Java 中的 CET 时间
Hiten Kanwar
2021年10月2日
2021年6月29日
在整个世界上,有 190 多个国家/地区,每个国家/地区都遵循特定的时区。这些时区充当规则,对于方便有效地表达时间至关重要。但是,由于夏令时等某些变量,这些时区可能会变得不明确。
Java 为我们提供了多个处理时区的类。随着新版本的 Java 的出现,它提出了更广泛和有用的类,例如 ZoneId
和 ZoneOffset
。
随着 JSR-310 的出现,添加了一些新的、更有效率的 API 来管理时间和时区。ZoneId
就是这样一个添加的类。它是时区的表示,例如 Europe/Berlin
。
大多数固定偏移量由 ZoneOffset
表示。我们可以通过在任何 ZoneId
上调用 normalized()
来确保固定偏移 ID 将表示为 ZoneOffset
。
CET 的 IANA 定义表示它遵循中欧的时区规则,其中包括夏季和冬季时间。
应该理解时区标识符和该标识符的短名称是两个不同的元素。名称可能会在 CET
和 CEST
之间变化,但标识符始终固定为 CET
。
我们可以使用 getRules()
函数获取与 CET
时区相关的功能。它可以传达给定时间的偏移量。
请参考以下代码。
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class Main
{
public static void main(String[] args){
ZoneId zone = ZoneId.of("CET");
System.out.println("Zone Name: "+zone);
System.out.println("Offset " + zone.getRules());
}
}
输出:
Zone Name: CET
Offset ZoneRules[currentStandardOffset=+01:00]
其他方法可能是使用 ZoneOffset.ofHours(1)
而不是使用 ZoneId.of("CET")
。我们可以使用 getTransitions()
和 getTransitionRules()
获得总的转换和转换规则。