import java.time.Duration;
import java.time.LocalDateTime;

public class ManipulasiLocalDateTime {
    public static void main(String[] args) {
        LocalDateTime mulai = LocalDateTime.of(2026, 1, 15, 8, 0);

        // Semua operasi mengembalikan objek LocalDateTime yang baru.
        LocalDateTime selesai = mulai.plusHours(5).plusMinutes(30);
        LocalDateTime ulang = mulai.minusDays(7);
        LocalDateTime majuJam = mulai.withHour(20);

        System.out.println("mulai           : " + mulai);
        System.out.println("plus 5j 30m     : " + selesai);
        System.out.println("minus 7 hari    : " + ulang);
        System.out.println("withHour(20)    : " + majuJam);

        // Penjumlahan lintas tengah malam menggeser tanggal, bukan berputar.
        LocalDateTime lewatTengahMalam = mulai.plusHours(20);
        System.out.println("plus 20 jam     : " + lewatTengahMalam);

        LocalDateTime batas = LocalDateTime.of(2026, 1, 15, 12, 0);
        System.out.println("isBefore(batas) : " + mulai.isBefore(batas));
        System.out.println("compareTo(batas): " + mulai.compareTo(batas));

        // Durasi fisik dihitung dari dua LocalDateTime.
        Duration durasi = Duration.between(mulai, selesai);
        System.out.println("Duration.between: " + durasi);
    }
}
