import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class RentangDuration {
    public static void main(String[] args) {
        // Membuat durasi dari satuan waktu fisik.
        Duration rapat = Duration.ofHours(1).plusMinutes(30);
        System.out.println("1 jam 30 menit      : " + rapat);
        System.out.println("ofSeconds(90)       : " + Duration.ofSeconds(90));
        System.out.println("ofMinutes(45)       : " + Duration.ofMinutes(45));

        // Durasi di antara dua LocalTime.
        Duration selisih = Duration.between(LocalTime.of(8, 0), LocalTime.of(9, 45));
        System.out.println("antara 08:00-09:45  : " + selisih);

        // Durasi di antara dua Instant.
        Duration unduh = Duration.between(
                Instant.parse("2026-01-15T01:00:00Z"),
                Instant.parse("2026-01-15T01:01:45Z"));
        System.out.println("durasi unduh        : " + unduh);

        // Konversi ke satuan lain.
        System.out.println("toHours()           : " + rapat.toHours());
        System.out.println("toMinutes()         : " + rapat.toMinutes());
        System.out.println("toSeconds()         : " + rapat.toSeconds());
        System.out.println("toDays() 48 jam     : " + Duration.ofHours(48).toDays());

        // Durasi dapat dijumlahkan ke tipe bertanggal-waktu.
        System.out.println("selesai proyek      : " + LocalDateTime.of(2026, 1, 15, 23, 0).plus(rapat));
    }
}
