11. Date, Time ve Calendar Kullanımı

Java logo
Java logo
image text

11. Date, Time ve Calendar Kullanımı

Java, tarih ve saat işlemlerini yönetmek için zengin bir API sunar. Bu API, eski java.util.Date ve java.util.Calendar sınıflarından, Java 8 ile tanıtılan daha modern java.time paketine kadar çeşitli araçlar içerir. Bu makalede, Java’da tarih, saat ve takvim işlemlerinin nasıl yapıldığını detaylı bir şekilde inceleyeceğiz.

java.util.Date Sınıfı

java.util.Date, Java’daki en temel tarih ve saat sınıfıdır. Milisaniye cinsinden bir zaman noktasını temsil eder. Ancak, bu sınıfın birçok metodu kullanımdan kaldırılmıştır (deprecated) ve java.time paketinin kullanımı önerilmektedir.

Örnek:

Java
import java.util.Date;

public class DateExample {
    public static void main(String[] args) {
        Date now = new Date();
        System.out.println("Şu anki tarih ve saat: " + now);
    }
}

java.util.Calendar Sınıfı

java.util.Calendar, tarih ve saat alanlarını (yıl, ay, gün, saat, dakika, saniye vb.) manipüle etmek için kullanılan soyut bir sınıftır. Date sınıfına göre daha fazla esneklik sunar.

Örnek:

Java
import java.util.Calendar;
import java.util.Date;

public class CalendarExample {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date()); // Mevcut zamanı ayarla

        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1; // Aylar 0'dan başlar
        int day = calendar.get(Calendar.DAY_OF_MONTH);

        System.out.println("Yıl: " + year);
        System.out.println("Ay: " + month);
        System.out.println("Gün: " + day);
    }
}

Calendar sınıfı ile tarihleri ileri veya geri almak da mümkündür:

Java
calendar.add(Calendar.DAY_OF_MONTH, 7); // 7 gün ekle
Date futureDate = calendar.getTime();
System.out.println("7 gün sonraki tarih: " + futureDate);

java.time Paketi (Java 8 ve Sonrası)

Java 8 ile birlikte gelen java.time paketi, tarih ve saat işlemlerini daha modern ve kolay bir şekilde yapmayı sağlar. Bu paket, Date ve Calendar sınıflarının eksikliklerini gidermek amacıyla tasarlanmıştır. Temel sınıflar şunlardır:

  • LocalDate: Yalnızca tarihi (yıl, ay, gün) temsil eder.
  • LocalTime: Yalnızca saati (saat, dakika, saniye, nanosaniye) temsil eder.
  • LocalDateTime: Hem tarihi hem de saati temsil eder.
  • ZonedDateTime: Zaman dilimi bilgisiyle birlikte tarihi ve saati temsil eder.
  • Instant: Milisaniye veya nanosaniye hassasiyetinde anlık bir zaman noktasını temsil eder.
  • Duration: İki zaman noktası arasındaki süreyi temsil eder (örneğin, saat, dakika, saniye).
  • Period: İki tarih arasındaki süreyi temsil eder (örneğin, yıl, ay, gün).

LocalDate Kullanımı

LocalDate, sadece tarihi temsil eder.

Örnek:

Java
import java.time.LocalDate;

public class LocalDateExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        System.out.println("Bugünün tarihi: " + today);

        LocalDate specificDate = LocalDate.of(2023, 10, 27);
        System.out.println("Belirli bir tarih: " + specificDate);
    }
}

LocalTime Kullanımı

LocalTime, sadece saati temsil eder.

Örnek:

Java
import java.time.LocalTime;

public class LocalTimeExample {
    public static void main(String[] args) {
        LocalTime now = LocalTime.now();
        System.out.println("Şu anki saat: " + now);

        LocalTime specificTime = LocalTime.of(14, 30, 0);
        System.out.println("Belirli bir saat: " + specificTime);
    }
}

LocalDateTime Kullanımı

LocalDateTime, hem tarihi hem de saati temsil eder.

Örnek:

Java
import java.time.LocalDateTime;

public class LocalDateTimeExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        System.out.println("Şu anki tarih ve saat: " + now);

        LocalDateTime specificDateTime = LocalDateTime.of(2023, 10, 27, 14, 30, 0);
        System.out.println("Belirli bir tarih ve saat: " + specificDateTime);
    }
}

ZonedDateTime Kullanımı

ZonedDateTime, zaman dilimi (timezone) bilgisiyle birlikte tarihi ve saati temsil eder.

Örnek:

Java
import java.time.ZonedDateTime;
import java.time.ZoneId;

public class ZonedDateTimeExample {
    public static void main(String[] args) {
        ZoneId zoneId = ZoneId.of("Europe/Istanbul");
        ZonedDateTime now = ZonedDateTime.now(zoneId);
        System.out.println("İstanbul'daki şu anki tarih ve saat: " + now);
    }
}

Tarih ve Saat Formatlama

java.time paketi, tarih ve saatleri formatlamak için DateTimeFormatter sınıfını sunar. Bu sınıf, farklı formatlarda tarih ve saatleri göstermeyi sağlar.

Örnek:

Java
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss");
        String formattedDateTime = now.format(formatter);
        System.out.println("Formatlanmış tarih ve saat: " + formattedDateTime);
    }
}

Sonuç

Java’da tarih ve saat işlemleri, java.util.Date ve java.util.Calendar sınıfları ile başlayıp, Java 8 ile gelen java.time paketi ile modern bir hale gelmiştir. java.time paketi, daha okunabilir, anlaşılır ve kullanımı kolay bir API sunar. Bu makalede, bu sınıfların ve paketlerin temel kullanım örneklerini inceledik. Projelerinizde tarih ve saat işlemlerini yaparken, java.time paketini kullanmanız önerilir.

Java time package classes diagram

Unutmayın, zaman yönetimi sadece programlama için değil, hayatın her alanı için önemlidir.

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*