Cette section présente les différentes manières pour approcher les dates en java. Pour l'instant il n'est proposé que l'utilisation de la classe SimpleDateFormat ainsi que les méthodes dont dispose celles-ci. Vous trouverez également un tableau récapitulatif des formats de date pouvant être appliqué. Plus des fonctions permettant de manipuler les dates.
Utiliser la classe SimpleDateFormat
Cette classe propose des méthodes telles que parse ou format afin d'obtenir des données soit de type STRING, soit DATE. Elle permet d'utiliser les méthodes toPattern et applyPattern afin de changer le format d'une DATE.
Obtenir la date suivante ou précédente un nombre de jours déterminés
Cette classe permet de donner la date en fonction d'une date de départ. Exemple obtenir la date d'il y a trois jours.
Utiliser la classe SimpleDateFormat
classe TesteClasseSimpleDateFormat.java
- Code:
-
//Pensez aux packages d'importation
import java.util.Date;
import java.text.SimpleDateFormat;
public class TesteClasseSimpleDateFormat {
public static void main(String[] args) {
try {
Date maDateAvecFormat=new Date();
SimpleDateFormat dateLongue = new SimpleDateFormat("EEEE MM MMMM yyyy HH:mm:ss");
SimpleDateFormat dateStandard = new SimpleDateFormat("dd/MM/yyyy");
//Utilisation de la methode FORMAT
System.out.println(dateLongue.format(maDateAvecFormat));
System.out.println("Format date dd/MM/yyyy :"+dateStandard.format(maDateAvecFormat));
//Utilisation de la methode toPattern()
System.out.println("Affichage du PATTERN : "+ dateStandard.toPattern());
//Changer de Pattern avec la methode applyPattern()
System.out.println("Changement de PATTERN:");
dateStandard.applyPattern("yyyy/MM/dd");
System.out.println("Format date yyyy/MM/dd :"+ dateStandard.format(maDateAvecFormat));
System.out.println("Affichage du PATTERN : "+ dateStandard.toPattern());
//Obtenir un Objet Date sous un format désiré METHODE PROPRE
//Utilisation de la methode PARSE
Date maDateparsee=dateStandard.parse("25/03/1971");
//Cette methode Fonctionne mais est depreciée A EVITER !!!!!!!!!!!!! METHODE SALE
Date maSecondeDate=new Date("25/03/1971");
//Pensez a la fin de votre traitement a affecter null afin d'éviter de consommer
//des ressources inutilement
dateStandard=null;
dateLongue=null;
maSecondeDate=null;
maDateparsee=null;
}
catch (Exception ex) {System.out.println("Une erreur est survenue");}
}
}
Remarque: La méthode FORMAT de la classe SimpleDateFormat retourne une donnée de type STRING La méthode PARSE de la classe Format retourne une donnée de type DATE
Résultat à l'écran
mardi 02 février 2004 09:19:56
02/02/2004
Format date dd/MM/yyyy :18/03/2004
Affichage du PATTERN : dd/MM/yyyy
Format date yyyy/MM/dd :2004/03/18
Affichage du PATTERN : yyyy/MM/ddDéfinition des différents formats pour la date et l'heure
classe TesteDate.java
- Code:
-
//Pensez aux packages d'importation
import java.util.*;
import java.text.*;
public class TesteDate {
public static void main(String[] args) {
SimpleDateFormat dateStandard = new SimpleDateFormat("dd/MM/yyyy");
Date dateJour= new Date();
try {
//Ici la date de référence
dateJour = dateStandard.parse("01/05/2002");
//Ici on demande la date du lendemain de notre date de référence
//si on veut la date d'il y a trois jours on met -3 en paramètre
System.out.println(deplacerDate(dateJour,1).toString());
}
catch (Exception ex) {
System.out.println("Erreur d'excution de l'application : "+ex);
}
}
public static Date deplacerDate(Date dateDepartRef,int nb_jour_deplacer){
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateDepartRef);
Calendar calendar2 = Calendar.getInstance();
calendar2.clear();
System.out.println(calendar.get(calendar.DAY_OF_MONTH)-1);
calendar2.set(calendar.get(calendar.YEAR), calendar.get(calendar.MONTH),calendar.get(calendar.DAY_OF_MONTH)+nb_jour_deplacer);
return calendar2.getTime();
}
}
Résultat à l'écran
Thu May 02 00:00:00 CEST 2002soit le 02 Mai 2002 pour ceux qui ont du mal avec l'anglais...
Comme moi par exemple...
Remarque: La méthode FORMAT de la classe SimpleDateFormat permet de passer son adresse de référence. EVITER : Date dateJour = new Date("01/02/2003"); cette méthode est DEPRECATED. Comme vous, si vous continuez à l'utiliser..
[code]