Les dates (suite)

Toujours concernant la problématique de gestion des dates, nous allons voir aujourd'hui comment réaliser des calculs sur une date. Par exemple nous aimerions savoir quel jour on était il y a 6 mois.

L'objet java.util.Calendar


C'est une classe abstraite fournie de base, dont il existe une implémentation appelée GregorianCalendar. Comme son nom l'indique il s'agit d'un objet calendrier s'appuyant sur le calendrier Grégorien.

// Récupération d'une instance de calendrier
Calendar c = GregorianCalendar.getInstance();
// Calcul de la date 6 mois avant
c.add(Calendar.MONTH, -6);
// Récupération de la date
Date sixMonthAgo = c.getTime();

Comme on peut le constater, la méthode add permet d'ajouter (ou de soustraire) un nombre entier se rapportant à un intervalle de temps (année, mois, semaine, jour, heure, minute, seconde). Il est possible de réaliser plusieurs opérations à la suite. Le calcul n'est réalisé qu'au moment où on appelle la méthode getTime().

Il est possible d'initialiser le calendrier avec une date pré-calculée.

// Récupération d'une instance de calendrier
Calendar c = GregorianCalendar.getInstance();
Date date = null;
try {
  // Création d'une date arbitraire
  date = new SimpleDateFormat("dd/MM/yyyy").parse("16/06/1980");
  // Initialisation de la date du calendrier
  c.setTime(date);
  // Calcul de la date 6 mois avant
  c.add(Calendar.MONTH, -6);
  // Récupération de la date
  date = c.getTime();
}
catch(ParseException e) {
  // Erreur de format
}