Java’da Tarih Karşılaştırma: Kapsamlı Bir Kılavuz
Java, her birinin kendi güçlü ve zayıf yönleri olan çeşitli tarih karşılaştırma yöntemleri sunar. Bu kılavuz, yeni projeler için şiddetle önerilen modern java.time
API’sini ve eski java.util.Date
sınıfını kullanarak en yaygın yöntemleri ele almaktadır.
İçindekiler
before()
veafter()
Kullanımıequals()
KullanımıcompareTo()
Kullanımıjava.time
ile Modern Tarih/Zaman Karşılaştırması
before()
ve after()
Kullanımı
java.util.Date
sınıfının bir parçası olan before()
ve after()
metodları, basit karşılaştırmalar sunar. before(Date otherDate)
, geçerli tarihin otherDate
‘den önce olması durumunda true
döndürür ve after(Date otherDate)
, geçerli tarihin otherDate
‘den sonra olması durumunda true
döndürür. Ancak, java.util.Date
‘in zaman bilgisini içerdiğini ve karşılaştırmayı etkilediğini unutmayın.
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class DateComparison {
public static void main(String[] args) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = formatter.parse("2023-10-26");
Date date2 = formatter.parse("2024-01-15");
System.out.println("date1 date2'den önce: " + date1.before(date2)); // true
System.out.println("date2 date1'den sonra: " + date2.after(date1)); // true
}
}
equals()
Kullanımı
equals()
metodu, iki java.util.Date
nesnesi arasında tam eşitliği kontrol eder. Hem tarih hem de zaman bileşenlerinin eşleşmesi gerekir; aksi takdirde true
döndürmez. Bir milisaniyelik fark bile false
sonucuna yol açacaktır.
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class DateComparison {
public static void main(String[] args) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = formatter.parse("2023-10-26 10:00:00");
Date date2 = formatter.parse("2023-10-26 10:00:00");
System.out.println("date1 date2'ye eşit: " + date1.equals(date2)); // true
}
}
compareTo()
Kullanımı
compareTo(Date otherDate)
metodu, daha ayrıntılı bir karşılaştırma sağlar. Şunları döndürür:
- Geçerli tarih
otherDate
‘den önce ise negatif bir değer. - Tarihler eşitse sıfır.
- Geçerli tarih
otherDate
‘den sonra ise pozitif bir değer.
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class DateComparison {
public static void main(String[] args) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = formatter.parse("2023-10-26");
Date date2 = formatter.parse("2024-01-15");
System.out.println("date1 compareTo date2: " + date1.compareTo(date2)); // Negatif
System.out.println("date2 compareTo date1: " + date2.compareTo(date1)); // Pozitif
}
}
java.time
ile Modern Tarih/Zaman Karşılaştırması
java.time
API’sı (Java 8 ve üzeri), tarih ve zaman işlemede üstün bir yaklaşım sunar. LocalDate
, LocalDateTime
ve ZonedDateTime
gibi sınıflar, daha hassas ve daha net karşılaştırmalar sağlar. Ayrıca java.util.Date
‘in sakıncalarından da kaçınırlar.
import java.time.LocalDate;
import java.time.LocalDateTime;
public class ModernDateComparison {
public static void main(String[] args) {
LocalDate date1 = LocalDate.of(2023, 10, 26);
LocalDate date2 = LocalDate.of(2024, 1, 15);
System.out.println("date1 date2'den önce: " + date1.isBefore(date2)); // true
System.out.println("date1 date2'den sonra: " + date1.isAfter(date2)); // false
System.out.println("date1 date2'ye eşit: " + date1.equals(date2)); // false
LocalDateTime dateTime1 = LocalDateTime.of(2023, 10, 26, 10, 0, 0);
LocalDateTime dateTime2 = LocalDateTime.of(2023, 10, 26, 10, 0, 0);
System.out.println("dateTime1 dateTime2'ye eşit: " + dateTime1.equals(dateTime2)); //true
}
}
java.time
API’sinin metodları (isBefore()
, isAfter()
, equals()
), kodunuzun daha okunabilir ve sürdürülebilir olmasını sağlayarak net ve açık karşılaştırmalar sunar.