Savoir si une date est avant ou après
Pour savoir si une date est supérieur à une autre, on peut comparer soi-męme le nombre de millisecondes de chaque date. Ou alors utiliser les fonctions after et before de l'objet Calendar.
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
* Comparer des date avec l'objet Calendar
* @author Axel
* http://www.fobec.com/java/997/comparer-dates-avec-objet-calendar.html
*/
public class DateCompare {
public static void main(String[] args) {
SimpleDateFormat df=new SimpleDateFormat("dd/MM/yyyy");
//Par défaut, date d'aujourd'hui
Calendar calAujourdhui = Calendar.getInstance();
//Fixe à la date d'hier
Calendar calYesterday = Calendar.getInstance();
calYesterday.add(Calendar.DAY_OF_MONTH, -1);
if (calYesterday.equals(calAujourdhui)) {
System.out.println("Les dates sont identiques");
} else if (calYesterday.after(calAujourdhui)) {
System.out.println(df.format(calYesterday.getTime())+" est supérieur à "+df.format(calAujourdhui.getTime()));
} else if (calYesterday.before(calAujourdhui)) {
System.out.println(df.format(calYesterday.getTime())+" est inférieur à "+df.format(calAujourdhui.getTime()));
}
}
}
Ces fonctions sont pratiques si l'on veut trier une liste de date. Par exemple, dans l’algorithme Quicksort, les éléments sont triés grâce à une comparaison ayant 3 résultats: égal, supérieur et inférieur. L'objet JAVA Calendar dispose justement de ces 3 comparaisons pour déterminer si une date est égale à une autre ou si la date est avant ou après une autre date.