import java.time.ZoneId;
import java.time.ZonedDateTime;

public class KonversiZona {
    public static void main(String[] args) {
        ZonedDateTime diJakarta =
                ZonedDateTime.of(2026, 1, 15, 8, 0, 0, 0, ZoneId.of("Asia/Jakarta"));
        System.out.println("di Jakarta   : " + diJakarta);

        // withZoneSameInstant: momen yang sama, dibaca dari zona lain.
        ZonedDateTime diTokyo = diJakarta.withZoneSameInstant(ZoneId.of("Asia/Tokyo"));
        System.out.println("di Tokyo     : " + diTokyo);
        System.out.println("jam di Tokyo : " + diTokyo.getHour());

        // Keduanya menunjuk momen yang sama di garis waktu.
        System.out.println("Instant sama? " + diJakarta.toInstant().equals(diTokyo.toInstant()));

        // withZoneSameLocal: waktu dinding disalin, momennya menjadi berbeda.
        ZonedDateTime jamSama = diJakarta.withZoneSameLocal(ZoneId.of("Asia/Tokyo"));
        System.out.println("jam sama     : " + jamSama);
        System.out.println("Instant sama? " + diJakarta.toInstant().equals(jamSama.toInstant()));

        // Penjumlahan pada ZonedDateTime mengikuti waktu dinding setempat.
        System.out.println("plus 2 jam   : " + diTokyo.plusHours(2));
    }
}
