Java tarihlerini karşılaştırmanın çeşitli yolları vardır. Dahili olarak, bir tarih zaman içinde (uzun) bir nokta olarak temsil edilir - 1 Ocak 1970'den bu yana geçen milisaniye sayısı. Java'da Date bir nesnedir, yani karşılaştırma için birden çok yöntem içerir. İki tarihi karşılaştırmanın herhangi bir yöntemi, esasen tarihlerin zamanlarını karşılaştıracaktır.
adımlar
Yöntem 1/4: karşılaştırmayı kullanma
Adım 1. CompareTo'yu kullanın
Date, Comparable öğesini uygular ve bu nedenle iki tarih, doğrudan karşılaştırma yöntemiyle karşılaştırılabilir. Tarihler zaman içinde aynı nokta içinse, yöntem sıfır döndürür. Karşılaştırılan tarih, tarih bağımsız değişkeninden önceyse, sıfırdan küçük bir değer döndürülür. Karşılaştırılan tarih, tarih bağımsız değişkeninden sonraysa, sıfırdan büyük bir değer döndürülür. Tarihler eşitse, 0 değeri döndürülür.
Adım 2. Tarih nesnelerini oluşturun
Karşılaştırmaya başlamadan önce her bir tarih nesnesini oluşturmanız gerekecektir. Bunu yapmanın bir yolu SimpleDateFormat sınıfını kullanmaktır. Tarih değerlerinin tarih nesnelerine kolayca girilmesini sağlar.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-AA-gg"); //Yeni tarih nesnelerinde değerleri bildirmek için. tarih oluştururken aynı tarih biçimini kullanın Date date1 = sdf.parse("1995-02-23"); //tarih1 23 Şubat 1995 Tarih tarih2 = sdf.parse("2001-10-31"); //date2, 31 Ekim 2001'dir Date date3 = sdf.parse("1995-02-23"); //date3, 23 Şubat 1995
Adım 3. Tarih nesnelerini karşılaştırın
Aşağıdaki kod size her durumu gösterecektir - küçüktür, eşittir ve büyüktür.
tarih1.karşılaştır(tarih2); //tarih1 < tarih2, 0'dan küçük döndürür date2.compareTo(date1); //date2 > date1, 0'dan büyük döndürür date1.compareTo(date3); //date1 = date3, yani konsola 0 yazdıracak
Yöntem 2/4: Eşittir, Sonrası ve Öncesi Kullanma
Adım 1. Eşittir, sonra ve önce kullanın
Tarihler, yöntemlerden sonra ve önceki eşittir ile karşılaştırılabilir. İki tarih zaman içinde aynı nokta içinse, eşittir yöntemi true değerini döndürür. Örnekler, karşılaştırma yönteminden önceden oluşturulmuş tarihleri kullanacaktır.
Adım 2. Before yöntemini kullanarak karşılaştırın
Aşağıdaki kod doğru ve yanlış bir durumu gösterir. tarih1 tarih2'den önceyse, önce true değerini döndürür. Değilse, önce false döndürür.
System.out.print(tarih1.önce(tarih2)); // true System.out.print(date2.before(date2)) yazdırır; //yanlış yazdırır
Adım 3. After yöntemini kullanarak karşılaştırın
Aşağıdaki kod doğru ve yanlış bir durumu gösterir. tarih2, tarih1'den sonraysa, after true döndürür. Değilse, false döndürür.
System.out.print(date2.after(date1));//doğru yazdırır System.out.print(tarih1.sonra(tarih2));//yanlış yazdırır
Adım 4. Eşittir yöntemini kullanarak karşılaştırın
Aşağıdaki kod doğru ve yanlış bir durumu gösterir. Tarihler eşitse, eşittir true döndürür. Değillerse, eşittir false döndürür.
System.out.print(date1.equals(date3));//doğru yazdırır System.out.print(tarih1.equals(tarih2));//yanlış yazdırır
Yöntem 3/4: Takvim Sınıfını Kullanma
Adım 1. Takvimi kullanın
Calendar sınıfında ayrıca, date sınıfı için yukarıda açıklananla aynı şekilde çalışan karşılaştırma, eşittir, sonrası ve öncesi yöntemleri vardır. Yani tarih bilgisi bir takvimde tutuluyorsa, sadece karşılaştırma yapmak için tarihi çıkarmaya gerek yoktur.
Adım 2. Takvim örneklerini oluşturun
Takvim yöntemlerini kullanmak için birkaç Takvim örneğine ihtiyacınız olacak. Neyse ki, önceden oluşturulmuş Date örneklerinden zamanları alabilirsiniz.
Takvim cal1 = Calendar.getInstance(); //cal1 bildiriyor Calendar cal2 = Calendar.getInstance(); //cal2 bildiriyor Calendar cal3 = Calendar.getInstance(); //cal3 cal1.setTime(date1) bildirir; //tarihi cal1'e uygular cal2.setTime(date2); cal3.setTime(tarih3);
Adım 3. Daha önce kullanarak cal1 ve cal2'yi karşılaştırın
cal1 cal2'den önce olduğu için aşağıdaki kod doğru yazdırılmalıdır.
System.out.print(cal1.before(cal2)); // true yazdıracak
Adım 4. after kullanarak cal1 ve cal2'yi karşılaştırın
cal1 cal2'den önce olduğu için aşağıdaki kod false yazmalıdır.
System.out.print(cal1.after(cal2)); //yanlış yazdırır
Adım 5. Eşitleri kullanarak cal1 ve cal2'yi karşılaştırın
Aşağıdaki kod, hem doğru hem de yanlış bir durumun bir örneğini gösterecektir. Koşul, karşılaştırılmakta olan takvim örneklerine bağlıdır. Kod, bir sonraki satırda "doğru", ardından "yanlış" yazmalıdır.
System.out.println(cal1.equals(cal3)); //doğru yazdırır: cal1 == cal3 System.out.print(cal1.equals(cal2)); //yanlış yazdırır: cal1 != cal2
Yöntem 4/4: getTime'ı kullanma
Adım 1. getTime'ı kullanın
Önceki yaklaşımlardan herhangi birinin daha okunabilir ve bu nedenle tercih edilebilir olmasına rağmen, iki tarihin zaman noktasını doğrudan karşılaştırmak da mümkündür. Bu, iki ilkel veri türünün karşılaştırması olacaktır, bu nedenle "" ve "==" ile yapılabilir.
Adım 2. Uzun süreli nesneleri oluşturun
Tarihleri karşılaştırmadan önce, önceden oluşturulmuş Date nesnelerinden gelen verilerle uzun tamsayılar oluşturmalısınız. Neyse ki, işin çoğunu getTime() yöntemi sizin için yapacak.
uzun zaman1 = getTime(tarih1); //tarih1'den ilkel zaman1'i bildirir uzun zaman2 = getTime(tarih2); // tarih2'den ilkel zaman2'yi bildirir
Adım 3. Karşılaştırmadan daha azını yapın
Bu iki tamsayı değerini karşılaştırmak için daha az sembolünü (<) kullanın. Zaman1 zaman 2'den küçük olduğu için ilk mesajın yazdırılması gerekir. Else ifadesi, uygun sözdizimi için dahil edilmiştir.
if(time1 < time2){ System.out.println("tarih1 tarih2'den öncedir"); //zaman1'den beri yazdırılacak <time2 } else{ System.out.println("tarih1 tarih2'den önce değil"); }
Adım 4. Karşılaştırmadan daha fazlasını yapın
Bu iki tamsayı değerini karşılaştırmak için büyüktür sembolünü (>) kullanın. Zaman1 zaman 2'den büyük olduğundan, ilk mesaj yazdırılmalıdır. Else ifadesi, uygun sözdizimi için dahil edilmiştir.
if(time2 > time1){ System.out.println("tarih2, tarih1'den sonra"); //zaman2 > zaman1'den beri yazdırılacaktır } else{ System.out.println("tarih2, tarih1'den sonra değil"); }
Adım 5. Bir eşittir karşılaştırması yapın
Eşitlik için bu iki tamsayı değerini karşılaştırmak için eşitliği kontrol etmek için (==) simgesini kullanın. time1 time3'e eşit olduğundan, ilk mesajın yazdırılması gerekir. Program else ifadesine ulaşırsa, bu, zamanların eşit olmadığı anlamına gelir.
if(time1 == time2){ System.out.println("tarihler eşittir"); } else{ System.out.println("tarihler eşit değil"); //zaman1'den beri yazdırılacak!=zaman2 }