Quelle est la façon la plus simple de comparer deux dates au format String? J'aurais besoin de savoir si date1
vient après/avant date2
.
String date1 = "2015-12-01";
String date2 = "2015-12-31";
Pour une approche plus générique, vous pouvez les convertir en objets Date
d'un format défini, puis utiliser les méthodes appropriées:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = format.parse(date1);
Date date2 = format.parse(date2);
if (date1.compareTo(date2) <= 0) {
System.out.println("earlier");
}
Dans ce cas précis, vous pouvez simplement comparer les chaînes date1.compareTo(date2)
.
EDIT: Cependant, la bonne façon est d'utiliser SimpleDateFormat
:
DateFormat f = new SimpleDateFormat("yyyy-mm-dd");
Date d1 = f.parse(date1, new ParsePosition(0));
Date d2 = f.parse(date2, new ParsePosition(0));
Et puis comparez les dates:
d1.compareTo(d2);
La comparaison renverra une valeur négative si d1
est avant d2
et positif si d1
est après d2
.
Avec JodaTime, simplement:
DateTime d1 = DateTime.parse(date1);
DateTime d2 = DateTime.parse(date2);
Assert.assertTrue(d1.isBefore(d2));
Assert.assertTrue(d2.isAfter(d1));
Je vous conseille de les convertir en objets Date
.
String date1 = "2015-12-01";
String date2 = "2015-12-31";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.parse(date1).before(sdf.parse(date2)));
En les comparant comme:
if(date2 .compareTo(date1) > 0){
System.out.println(" ---- ");
}
n'est pas une option idéale (date1 et date2 sont des chaînes) car elle perd sa flexibilité et peut entraîner son propre lot de problèmes.
Vous pouvez simplement convertir votre chaîne en dates:
Date date1 = sdf.parse("2015-12-01");
Date date2 = sdf.parse("2010-01-01");
Ensuite, la comparaison se fait comme: if (date1.after (date2)) {System.out.println ("Date1 est après Date2"); }
if(date1.before(date2)){
System.out.println("Date1 is before Date2");
}
if(date1.equals(date2)){
System.out.println("Date1 is equal Date2");
}
Si je me souviens bien, il y a un ParseException
à gérer
Oui, vous pouvez comparer cela comme suit:
Date date1 = new Date();
Date date2 = new Date();
if(date1.before(date2)){
// statement
}
if(date1.after(date2)){
// statement
}