Tutoriel manipulation de dates – Additionner des jours, des mois, des heures…

La manipulation des données calendaires ou horaires a évolué lors de ces dernières version de Java. La classique classe Date serait – selon certains – appeler à disparaitre aux vus du nombre de méthodes dépréciées qu’elle contient. Quelle serait son digne successeur ? La classe Calendar bien sur !

Nous allons voir ici, comment afficher une date étrangère avec Calendar et comment ajouter et soustraire des jours.

Pour tous les tests, nous sommes aujourd’hui le Dimanche 18 Mai... Ne soyez donc pas surpris si les tests que vous effectuez ne donne pas la même date!

Utilisation de base de l’objet Calendar

Nous allons créer un calendrier et afficher la date d’aujourd’hui au format américain.

//On crée notre calendrier
		Calendar calendar = Calendar.getInstance();
 
		//On convertit en date
		Date date = calendar.getTime();
 
		//Regroupe toutes les normes américaine
		Locale localeUs = new Locale("En", "US");
 
		//On crée un systeme d'affichage de date
		//longue avec la norme américaine
		DateFormat dateFormat = DateFormat.getDateInstance(
				DateFormat.LONG, localeUs);
 
		//On affiche cette date:
		System.out.println(dateFormat.format(date));

Vous devrier voir afficher

Sunday, May 18, 2008

Pour définir une locale, l’argument du constructeur contient les deux lettres définissant le pays selon la norme ISO 3166 et les deux lettres définissant le langage selon la norme ISO 639.

Additionner ou Soustraire des Jours/Mois/Heures/Années

Rien de plus simple, il suffit de faire appel à la méthode add() de la classe Calendar.

//On crée notre calendrier
Calendar calendar = Calendar.getInstance();
 
//ajout 2J à la date
calendar.add(Calendar.DAY_OF_MONTH, 2);
 
//Retire 6 mois à la date
calendar.add(Calendar.MONTH, -6);
 
//On convertit en date
Date date = calendar.getTime();
 
//Regroupe toutes les normes américaine
Locale localeUs = new Locale("En", "US");
 
//On crée un systeme d'affichage de date
//longue avec la norme américaine
DateFormat dateFormat = DateFormat.getDateInstance(
DateFormat.LONG, localeUs);
 
//On affiche cette date:
System.out.println(dateFormat.format(date));

Dans notre cas, nous aurions comme sortie

Tuesday, November 20, 2007

Les principaux champs de Calendar sont:
Calendar.DAY_OF_MONTH;
Calendar.MONTH;
Calendar.YEAR;
Calendar.HOUR;
Calendar.MINUTE;
Calendar.SECOND;
Calendar.MILLISECOND;

La fourbe méthode roll()

Il existe une méthode dédiée à la soustraction de date. Toutefois la méthode roll() n’agit que sur le champ indiqué. Par exemple, si vous avez indiqué le champ jour, l’addition de 60 jours ne modifiera pas le mois, et encore moins l’année.

>//On crée notre calendrier
Calendar calendar = Calendar.getInstance();
 
//On retire 40 Jours
calendar.roll(Calendar.DAY_OF_MONTH, 40);
 
//On convertit en date
Date date = calendar.getTime();
 
//Regroupe toutes les normes américaine
Locale localeUs = new Locale("En", "US");
 
//On crée un systeme d'affichage de date
//longue avec la norme américaine
DateFormat dateFormat = DateFormat.getDateInstance(
DateFormat.LONG, localeUs);
 
//On affiche cette date:
System.out.println(dateFormat.format(date));

retournera

May 27, 2008