import java.time.Instant;
import java.time.ZoneId;
import java.time.ZoneOffset;

public class ZoneIdVsZoneOffset {
    public static void main(String[] args) {
        // Zona berbasis wilayah: membawa aturan lengkap dari basis data zona IANA.
        ZoneId wilayah = ZoneId.of("America/New_York");

        // Offset tetap: sekadar angka pergeseran dari UTC, tanpa aturan apa pun.
        ZoneOffset tetap = ZoneOffset.of("-05:00");

        Instant sebelumDST = Instant.parse("2026-03-07T12:00:00Z");
        Instant setelahDST = Instant.parse("2026-03-08T12:00:00Z");

        System.out.println("wilayah.getId() : " + wilayah.getId());
        System.out.println("offset pada 7 Maret 2026  : " + wilayah.getRules().getOffset(sebelumDST));
        System.out.println("offset pada 8 Maret 2026  : " + wilayah.getRules().getOffset(setelahDST));

        System.out.println("tetap.getId()   : " + tetap.getId());
        System.out.println("offset pada 8 Maret 2026  : " + tetap.getRules().getOffset(setelahDST));

        // Zona wilayah dapat berubah offset; offset tetap tidak pernah berubah.
        System.out.println("wilayah fixed?  : " + wilayah.getRules().isFixedOffset());
        System.out.println("tetap fixed?    : " + tetap.getRules().isFixedOffset());
    }
}
