Period dan Duration
Termasuk bagian Logika & Alur dalam perjalanan Java di Coddy. Pelajaran 57 dari 59.
Period merepresentasikan jumlah waktu berbasis tanggal (tahun, bulan, hari), sedangkan Duration merepresentasikan jumlah waktu berbasis waktu (jam, menit, detik).
Buat Period:
Period period = Period.of(1, 2, 15);
// 1 tahun, 2 bulan, 15 hariBuat Duration:
Duration duration = Duration.ofHours(2);
// 2 jam
Duration minutes = Duration.ofMinutes(90);
// 90 menitSetelah menjalankan kode di atas, period berisi:
P1Y2M15D // format ISO-8601Ukur selisih antara dua tanggal dengan Period.between(). Fungsi ini menerima dua nilai LocalDate dan membagi selisihnya menjadi tahun, bulan, dan hari:
LocalDate start = LocalDate.of(2024, 1, 15);
LocalDate end = LocalDate.of(2025, 3, 20);
Period p = Period.between(start, end);
p.getYears(); // 1
p.getMonths(); // 2
p.getDays(); // 5getDays() hanya mengembalikan sisa hari setelah menghitung tahun dan bulan penuh, bukan jumlah total hari antara kedua tanggal. LocalDateTime memberikan tanggalnya melalui toLocalDate().
Ukur selisih antara dua waktu dengan Duration.between(), yang menerima dua nilai LocalDateTime (atau LocalTime):
LocalDateTime from = LocalDateTime.of(2024, 3, 15, 10, 30);
LocalDateTime to = LocalDateTime.of(2024, 3, 15, 14, 45);
Duration d = Duration.between(from, to);
d.toHours(); // 4
d.toMinutes(); // 255
d.toMinutesPart(); // 15toMinutes() menghitung seluruh selisih dalam menit, termasuk jam. toMinutesPart() memberikan sisa menit setelah jam penuh, jadi selisih ini adalah 4 jam dan 15 menit.
Tantangan
MudahBuat method bernama calculateDifference yang menerima empat argumen:
- String (
start) dengan format "yyyy-MM-dd HH:mm" - String (
end) dengan format "yyyy-MM-dd HH:mm" - String (
unit) yang berupa "period" atau "duration" - String (
format) yang berupa "full" atau "simple"
Method tersebut harus:
- Menghitung selisih antara tanggal mulai dan tanggal akhir
- Mengembalikan selisih dalam format yang ditentukan
Pesan yang dikembalikan harus berupa:
- Jika tanggal tidak valid: kembalikan "Invalid date format"
- Jika unit tidak valid: kembalikan "Invalid unit"
- Jika format tidak valid: kembalikan "Invalid format"
- Untuk period dengan format "full": "Years: X, Months: Y, Days: Z"
- Untuk period dengan format "simple": "XyYmZd"
- Untuk duration dengan format "full": "Hours: X, Minutes: Y", dengan Y adalah sisa menit setelah jam penuh dihitung
- Untuk duration dengan format "simple": "XhYm"
Coba sendiri
import java.util.Scanner;
import java.time.*;
import java.time.format.*;
public class Main {
public static String calculateDifference(String start, String end, String unit, String format) {
// Tulis kodemu di sini
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String start = scanner.nextLine();
String end = scanner.nextLine();
String unit = scanner.nextLine();
String format = scanner.nextLine();
System.out.println(calculateDifference(start, end, unit, format));
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
1Array Multidimensi
Dasar Array 2DMengakses Elemen Array 2DLoop Bersarang dengan Array 2DRangkuman: Array 2DPenjumlahan dan Pengurangan MatriksArray BergerigiArray 3D dan Lebih JauhPola Umum Array 2DRangkuman: Semua tentang Array4HashSet Bagian 1
Apa itu HashSet?Menambahkan ElemenMenghapus ElemenMemeriksa Apakah Elemen AdaKosong dan UkuranMengosongkan dan MenyalinRekap: HashSet10Tanggal dan Waktu
Dasar-dasar LocalDateOperasi LocalTimePenggunaan LocalDateTimePeriod dan DurationFormat TanggalPenanganan Zona Waktu2HashMap Bagian 1
Apa itu HashMap?Deklarasikan HashMapMengakses nilaiPeriksa apakah key adaMengubah dictionaryRingkasan: HashMap3HashMap Bagian 2
Method HashMapIterasi dengan keySet()Iterasi dengan entrySet()HashMap BersarangRangkuman: Kelola GudangRangkuman: Operasi HashMap6Alur Kontrol Lanjutan
Pernyataan LabelEkspresi SwitchPencocokan PolaKlausa PenjagaRingkasan Alur Kontrol9Proyek: Penghitung Kata Unik
Input dan Penyimpanan TeksPemrosesan KataLatihan sendiri: Compiler Java online