CodeBlanks Logo Icon CodeBlanks

Ö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.

Başlangıç kodu

Main.java
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

Main.java
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

Main.java
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

Main.java
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ı

İleri seviye bölümündeki tüm dersler