Özet - Date/time API
- Java kursu
- İleri seviye
- Ders 24/82
- 5 dk
LocalDate, Period ve DateTimeFormatter'ı birleştirerek bir yaş hesaplayıcı yazarsın.
Özet - Date/time API
Bu grupta java.time paketinin temel sınıflarını gördün. LocalDate tarih, LocalTime saat, LocalDateTime ikisini bir arada tutar. Duration saat, Period gün bazlı aralık verir. Instant UTC anı, ZonedDateTime bölgesel zamanı tutar.
DateTimeFormatter ise tarih ve saatleri dizgiye çevirip geri okur. Bu sınıfların değiştirilemez olması, hesapları güvenli kılar; eski Date sınıfının yerini modern biçimde alır.
Uygulama Yaş hesabı: Period.between
LocalDate.of(2000, 5, 15) ile doğum tarihini ve LocalDate.of(2024, 5, 15) ile bugünü oluştur. Period.between(birth, today).getYears() ile yaşını System.out.println ile yazdır.
Başlangıç kodu
import java.time.LocalDate;
import java.time.Period;
// Doğum ve bugün tarihlerini oluştur
// Period.between ile fark al
// getYears ile yaşı yazdırÖrnek çözüm
import java.time.LocalDate;
import java.time.Period;
public class BirthdayCalc {
public static void main(String[] args) {
LocalDate birth = LocalDate.of(2000, 5, 15);
LocalDate today = LocalDate.of(2024, 5, 15);
System.out.println(Period.between(birth, today).getYears());
}
}Beklenen çıktı
24
Hangi sınıf ne zaman?
Doğru sınıfı seçmek soruna bağlıdır. Yalnızca tarih gerekirse LocalDate, yalnızca saat gerekirse LocalTime, ikisi gerekirse LocalDateTime kullanılır. Küresel zaman için Instant, bölgesel gösterim için ZonedDateTime seçilir.
Süre hesaplarında tarihler için Period, saatler için Duration kullanılır. Görüntüleme için DateTimeFormatter her zaman işe yarar. Eski Date ve Calendar sınıflarından kaçınılmalıdır; java.time paketi modern ve tutarlı bir alternatif sunar.
Uygulama Toplantı süresini biçimle ve hesapla
LocalDateTime.of(2024, 1, 15, 10, 0) ile başlangıcı, LocalDateTime.of(2024, 1, 15, 12, 30) ile bitişi oluştur. Duration.between(start, end).toMinutes() ile dakikayı al. Başlangıç saatını DateTimeFormatter.ofPattern("HH:mm") ile biçimle. Sonucu System.out.println ile biçimli + " - " + dakika + " dk" olarak yazdır.
Başlangıç kodu
import java.time.LocalDateTime;
import java.time.Duration;
import java.time.format.DateTimeFormatter;
// Başlangıç ve bitişi oluştur
// Duration.between ile dakika al
// Başlangıcı HH:mm ile biçimle ve yazdırÖrnek çözüm
import java.time.LocalDateTime;
import java.time.Duration;
import java.time.format.DateTimeFormatter;
public class MeetingDuration {
public static void main(String[] args) {
LocalDateTime start = LocalDateTime.of(2024, 1, 15, 10, 0);
LocalDateTime end = LocalDateTime.of(2024, 1, 15, 12, 30);
long minutes = Duration.between(start, end).toMinutes();
DateTimeFormatter f = DateTimeFormatter.ofPattern("HH:mm");
System.out.println(start.format(f) + " - " + minutes + " dk");
}
}Beklenen çıktı
10:00 - 150 dk
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hangi sınıf yıl-ay-gün bazlı tarih aralığını tutar?
- Duration
- Instant
- LocalTime
- Period Doğru cevap
Açıklama: Period yıl-ay-gün bazlıdır.
2 Sınıfı davranışla eşleştir
| Kavram | Anlamı |
|---|---|
LocalDate |
Tarih |
LocalTime |
Saat |
Duration |
Saat aralığı |
Instant |
UTC anı |