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()
獲得總的轉換和轉換規則。