Java
Özet - Date/time API
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.
Örnek çözümü göster
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());
}
}
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.
Örnek çözümü göster
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");
}
}
Kendini test et
-
Hangi sınıf yıl-ay-gün bazlı tarih aralığını tutar?
- Duration
- Instant
- LocalTime
- Period
Cevabı göster
Period — Period yıl-ay-gün bazlıdır.
-
Sınıfı davranışla eşleştir
- LocalDate
- Tarih
- LocalTime
- Saat
- Duration
- Saat aralığı
- Instant
- UTC anı
Sıradaki ders: Class<?>