Gestion et Formatage des dates :
La gestion des dates en java est représentée par 2 classes :
- Date (package java.util) :
Représentation d'un instant donné en date et heure.
La classe Date contient un certain nombres de méthodes qui permettent
de manipuler les dates. Cependant ces méthodes sont dépréciées.
Pour obtenir la date et heure du jour il suffit d'instancier la classe :
Date dateJour = new Date();
- GregorianCalendar (package java.util) : Classe permettant la manipulation
des dates. Cette classe hérite de la classe Calendar qui est abstraite.
La classe Calendar contient un certain nombre de constantes :
- MONTH
- DAY
- DAY_OF_MONTH
- DAY_OF_WEEK
- HOUR_OF_DAY
- MINUTE
Ces constantes permettent à la classe GregorianCalendar d'effectuer
des traitements comme ajouter la valeur 3 à une date donnée
pour la constante MINUTE ou DAY ou ...
Méthodes de la classe GregorianCalendar :
- add (int field, int nombre) : Ajoute le paramètre nombre à un mois ou
une heure ou ...
- after (Object when) boolean : Compare deux dates
- before (Object when) boolean : Compare deux dates
- isLeapYear (int year) boolean : indique si l'année est bissextile
- computeTime () : Transforme l'heure en millisecondes
- set(int field, int value) : Fixe une valeur pour le mois, l'année ...
- set(int field) : retourne une valeur pour le mois, l'année ...
package formation.exercise;
import java.util.*;
public class DateDemo {
public static void main(String[] args) {
GregorianCalendar calendar = new GregorianCalendar();
GregorianCalendar calendar2 = new GregorianCalendar();
calendar2.set(Calendar.DAY_OF_MONTH, 8);
System.out.println("Cal1 Année: " + calendar.get(Calendar.YEAR));
System.out.println("Cal1 Mois: " + calendar.get(Calendar.MONTH));
System.out.println("Cal1 Jour: " + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("Cal2 Année: " + calendar2.get(Calendar.YEAR));
System.out.println("Cal2 Mois: " + calendar2.get(Calendar.MONTH));
System.out.println("Cal2 Jour: " + calendar2.get(Calendar.DAY_OF_MONTH));
if (calendar.before(calendar2)) {
System.out.println("Cal1 est supérieur à Cal2");
}else {
System.out.println("Cal1 est inférieur à Cal2");
}//end if
calendar2.add(Calendar.MONTH, 4);
System.out.println("Cal2 Année: " + calendar2.get(Calendar.YEAR));
System.out.println("Cal2 Mois: " + calendar2.get(Calendar.MONTH));
System.out.println("Cal2 Jour: " + calendar2.get(Calendar.DAY_OF_MONTH));
if (calendar.before(calendar2)) {
System.out.println("Cal1 est supérieur à Cal2");
}else {
System.out.println("Cal1 est inférieur à Cal2");
}//end if
}//end Main
}//end Date Demo
|
De la même façon que les numériques, les dates sont formatées de façon différentes
selon les pays.
La classe permettant de gérer ce formatage est : DateFormat (package java.text)
Cette classe est abstraite.
Méthode de la classe DateFormat :
- getDateInstance() : Retourne un formateur de date
- getDateInstance(int style) : Retourne un formateur de date selon le style :
- DEFAULT : 14 nov 03
- SHORT : 14/11/03
- MEDIUM : 14 nov 03
- LONG : 14 novembre 2003
- FULL : jeudi, 14 novembre 2003
- getDateInstance(int style,Locale locale) : Retourne un formateur de date pour
le style et la langue passés en paramètre.
- getTimeInstance() : Retourne un formateur d'heures
- getTimeInstance(int style) : Retourne un formateur d'heures selon le style :
- DEFAULT : 15:58:45
- SHORT : 15:58
- MEDIUM : 15:58:45
- LONG : 15:58:45 GMT+02:00
- FULL : 15.58:45 Uhr GMT+02:00
- getTimeInstance(int style,Locale locale) : Retourne un formateur d'heures pour
le style et la langue passés en paramètre.
- getDateTimeInstance() : Retourne un formateur de date/heure
- getDateTimeInstance(int dateStyle, inttimeStyle) : Retourne un formateur de
date/heure selon le style :
- DEFAULT : 14 nov 03 15:58:45
- SHORT : 14/11/03 15:58
- MEDIUM : 14 nov 03 15:58:45
- LONG : 14 novembre 2003 15:58:45 GMT+02:00
- FULL : jeudi, 14 novembre 2003 15.58:45 Uhr GMT+02:00
- getDateTimeInstance(int dateStyle,int timeStyle, Locale locale) : Retourne un
formateur de date/heure pour le style et la langue passés en paramètre.
- format(Date date) String : retourne une chaîne de caractères formatée.
Il existe une seconde classe permettant de formater les dates selon ses
propres format : SimpleDateFormat
Cette classe, non abstraite, hérite de la classe DateFormat. Elle peut donc
servir à formater les dates de façon normale ou avec ses propres formats.
Méthode de la classe SimpleDateFormat
- SimpleDateFormat(String format) Constructeur avec le format en paramètre
- SimpleDateFormat(String format, Locale locale) Constructeur avec le format
et la langue en paramètre
- parse(String chaine) Date : Transforme une chaîne en date à condition que
la chaîne respecte le format
- format(Date date) String : Transforme une date en chaîne formatée.
Exercice :
package formation.exercise;
import java.util.*;
import java.text.*;
public class DateFormatDemo {
static public void afficheDate(Date maDate, Locale currentLocale) {
String dateResultat;
DateFormat df;
//Récupérer un formateur de date pour la langue courante
//formater la date passée en paramètre
//Affichage du résultat
System.out.println(dateResultat + " " + currentLocale.toString());
}
static public void afficheDate(int style, Locale currentLocale) {
Date jour;
String dateResultat;
DateFormat df;
//Récupérer un formateur de date pour la langue courante et le style
//Récupération de la date et heure courante
//formater la date
//Affichage du résultat
System.out.println(dateResultat + " " + currentLocale.toString());
}
static public void afficheHeure(int style, Locale currentLocale) {
Date jour = new Date();
String heureResultat;
DateFormat df;
//Récupérer un formateur d'heure pour la langue courante et le style
//Récupération de la date et heure courante
//formater l'heure
//Affichage du résultat
System.out.println(heureResultat + " " + currentLocale.toString());
}
static public String convertDateString(Date date, String format) {
String result;
//Instancier la classe SimpleDateFormat avec le format passé en paramètre
//Transformer la date en chaîne
return result;
}
static public Date convertStringDate(String chaine, String format) {
Date date = null;
try {
//Instancier la classe SimpleDateFormat avec le format passé en paramètre
//Transformer la chaîne en date
} catch (ParseException e) {
System.out.println(e.getMessage());
}finally {
return date;
}
}
static public void main(String[] args) {
//Appel des méthodes pour affichages du résultat.
//Création d'un tableau contenant différentes langues
Locale[] locales = {
new Locale("fr","FR"),
new Locale("de","DE"),
new Locale("en","US")
};
if(args.length==2){
String maDate = args[0];
String monFormat = args[1];
for (int i = 0; i < locales.length; i++) {
afficheDate(convertStringDate(maDate,monFormat),locales[i]);
}//end for
System.out.println("");
for (int i = 0; i < locales.length; i++) {
afficheDate(DateFormat.DEFAULT,locales[i]);
afficheDate(DateFormat.SHORT,locales[i]);
afficheDate(DateFormat.MEDIUM,locales[i]);
afficheDate(DateFormat.LONG,locales[i]);
afficheDate(DateFormat.FULL,locales[i]);
}//end for
System.out.println("");
for (int i = 0; i < locales.length; i++) {
afficheHeure(DateFormat.DEFAULT,locales[i]);
afficheHeure(DateFormat.SHORT,locales[i]);
afficheHeure(DateFormat.MEDIUM,locales[i]);
afficheHeure(DateFormat.LONG,locales[i]);
afficheHeure(DateFormat.FULL,locales[i]);
}//end for
}else{
System.out.println("Usage : Deux paramètres Date et format");
}
}
}
|
corrigé
package formation.sintaxe;
import java.util.*;
import java.text.*;
public class DateFormatDemo {
/**
* DateFormatDemo constructor comment.
*/
public DateFormatDemo() {
super();
}
static public void afficheDate(int style, Locale currentLocale) {
Date jour;
String dateResultat;
DateFormat df;
//Récupérer un formateur de date pour la langue courante et le style
df = DateFormat.getDateInstance(style, currentLocale);
//Récupération de la date et heure courante
jour = new Date();
//formater la date
dateResultat = df.format(jour);
//Affichage du résultat
System.out.println(dateResultat + " " + currentLocale.toString());
}
static public void afficheDate(Date maDate, Locale currentLocale) {
String dateResultat;
DateFormat df;
//Récupérer un formateur de date pour la langue courante
df = DateFormat.getDateInstance(DateFormat.DEFAULT, currentLocale);
//formater la date passée en paramètre
dateResultat = df.format(maDate);
System.out.println(dateResultat + " " + currentLocale.toString());
}
static public void afficheHeure(int style, Locale currentLocale) {
Date jour = new Date();
String heureResultat;
DateFormat df;
//Récupérer un formateur d'heure pour la langue courante et le style
df = DateFormat.getTimeInstance(style, currentLocale);
//Récupération de la date et heure courante
jour = new Date();
//formater l'heure
heureResultat = df.format(jour);
//Affichage du résultat
System.out.println(heureResultat + " " + currentLocale.toString());
}
static public String convertDateString(Date date, String format) {
String result;
//Instancier la classe SimpleDateFormat avec le format passé en paramètre
SimpleDateFormat sdf = new SimpleDateFormat(format);
//Transformer la date en chaîne
result = sdf.format(date);
return result;
}
static public Date convertStringDate(String chaine, String format) {
Date date = null;
try {
//Instancier la classe SimpleDateFormat avec le format passé en paramètre
SimpleDateFormat sdf = new SimpleDateFormat(format);
//Transformer la chaîne en date
date = sdf.parse(chaine);
} catch (ParseException e) {
System.out.println(e.getMessage());
}finally {
return date;
}
}
static public void main(String[] args) {
//Appel des méthodes pour affichages du résultat.
//Création d'un tableau contenant différentes langues
Locale[] locales = {
new Locale("fr","FR"),
new Locale("de","DE"),
new Locale("en","US")
};
if(args.length==2){
String maDate = args[0];
String monFormat = args[1];
for (int i = 0; i < locales.length; i++) {
afficheDate(convertStringDate(maDate,monFormat),locales[i]);
}//end for
System.out.println("");
for (int i = 0; i < locales.length; i++) {
afficheDate(DateFormat.DEFAULT,locales[i]);
afficheDate(DateFormat.SHORT,locales[i]);
afficheDate(DateFormat.MEDIUM,locales[i]);
afficheDate(DateFormat.LONG,locales[i]);
afficheDate(DateFormat.FULL,locales[i]);
}//end for
System.out.println("");
for (int i = 0; i < locales.length; i++) {
afficheHeure(DateFormat.DEFAULT,locales[i]);
afficheHeure(DateFormat.SHORT,locales[i]);
afficheHeure(DateFormat.MEDIUM,locales[i]);
afficheHeure(DateFormat.LONG,locales[i]);
afficheHeure(DateFormat.FULL,locales[i]);
}//end for
}else{
System.out.println("Usage : Deux paramètres Date et format");
}
}
}
|
|