

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

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