Les FAQs Java :
FAQ JAVA FAQ Java EE FAQ Java ME FAQ Java XML FAQ JavaFX FAQ Java GUI FAQ Struts FAQ JSF FAQ JDBC JDO FAQ Hibernate FAQ Spring FAQ Eclipse FAQ NetBeans FAQ JCreator FAQ Maven 2

FAQ JavaConsultez toutes les FAQ

Nombre d'auteurs : 53, nombre de questions : 231, dernière mise à jour : 26 janvier 2014 

 
OuvrirSommaireGénéralitésGestion des dates

Le constructeur par défaut de la classe java.util.Date construit une date initialisée à l'heure courante du système.

On peut également utiliser la méthode System.currentTimeMillis() pour récupérer le timestamp courant.

Si vous utilisez des instances de java.util.Date et de java.sql.Date dans le même programme, il est possible de convertir les deux formats de dates :

 
Sélectionnez
java.util.Date uDate = new java.util.Date();
java.sql.Date sDate = new java.sql.Date(System.currentTimeMillis());
 
/*
 * Conversion entre les 2 types de dates
 */
sDate = new java.sql.Date(uDate.getTime());
uDate = new java.util.Date(sDate.getTime());
Mis à jour le 20 décembre 2009  par Clément Cunin

Lien : Comment convertir une date en chaîne ?
Lien : Comment mettre à jour l'heure courante du système ?

L'API standard ne permet pas de modifier l'heure du système. La seule solution est de passer par une commande externe.

Créé le 9 mai 2002  par Clément Cunin

Lien : Comment exécuter une application externe ?
Lien : Comment connaître l'heure courante ?

Tout est prévu, il n'y a qu'à utiliser les classes de Sun tel que :

  • java.util.GregorianCalendar
  • java.util.Calendar
  • java.util.Date

Tout d'abord il nous faut une instance de GregorianCalendar

 
Sélectionnez

GregorianCalendar calendar = new java.util.GregorianCalendar(); 
// Initialisé à la date et l'heure courrante. 
calendar.setTime( maDate ); 
// Initialisé avec une instance de Date. 

Voici ensuite quelques exemples d'opération (pour plus d'information lire la doc, évidemment...)
- sur le champs "jour" (7 jours plus tôt) :

 
Sélectionnez
calendar.add (Calendar.DATE, -7);

- sur le champs "mois" (5 mois plus tard) :

 
Sélectionnez
calendar.add (Calendar.MONTH, 5);

Et pour ce qui est des affichages je vous conseille d'utiliser la solution proposée ici en utilisant la méthode

 
Sélectionnez
public Date calendar.getTime ();
Créé le 16 août 2002  par Johann Heymes

La conversion d'une date en chaîne de caractères est délicate au premier abord. En effet, le format des dates est très différent d'une langue à l'autre. Heureusement, les fonctions d'internationalisation de Java vont faire le travail à notre place...

 
Sélectionnez

// IMPORT
import java.util.Locale;
import java.text.DateFormat;
 
// 1. Choix de la langue
Locale locale = Locale.getDefault();
 
/** 2. Construction du DateFormat en choisiant un format :
 * SHORT = 01/01/2002
 * FULL = lundi 1 janvier 2002
 */
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL, locale);
 
// 3. Affichage
System.out.println(dateFormat.format(maDate));

Si vous souhaitez utiliser un format de sortie plus exotique, vous pouvez accéder directement à la classe java.text.SimpleDateFormat.

 
Sélectionnez

DateFormat dateFormat = new SimpleDateFormat("hh'h'mm dd-MM-yy");
//résultat : "23h59 31-12-2000"
Créé le 9 mai 2002  par Clément Cunin

Lien : Comment convertir une date en chaîne ?

Pour convertir une chaine en date, il faut connaître le format de la date. Par défaut, une seule classe dans l'API gère les formats de date : java.text.SimpleDateFormat. On utilise le parser de date pour effectuer la conversion. Voici une méthode générique :

 
Sélectionnez

public static Date stringToDate(String sDate, String sFormat) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat(sFormat);
        return sdf.parse(sDate);
} 

Le parser déclenche l'exception ParseException quand la chaine ne respecte pas le format. La documentation sur java.text.SimpleDateFormat décrit le format d'une date, et des lettres à utiliser pour caractériser le jour, le mois, ... etc.
Cette méthode est valable à partir du JDK 1.1
Un exemple d'utilisation est fourni en téléchargement.

Mis à jour le 1er mai 2008  par Grégory Danelon

Lien : Comment convertir une date en chaîne ?
Téléchargement : Exemple d'utilisation.

Date de création :
Aucune solution n'est disponible pour connaître la date de création d'un fichier. Certains systèmes comme Linux ne fournissant pas cette information, aucun solution portable n'est possible.

Date de la dernière modification :
Là, en revanche, aucun problème, la méthode lastModified() de la classe java.io.File est disponible.

 
Sélectionnez
long dateModification = monFichier.lastModified();

Toutefois, le long retourné par la méthode lastModified() peut dépendre du système d'exploitation et donc ne pas être toujours extrêmement précise.

Mis à jour le 2 juin 2007  par L'équipe Java

Par défaut la classe DateFormat essaie d'interpréter une date incorrecte. Ainsi le 31 février 2000 retournera un objet Date valide.

 
Sélectionnez

Date d = new SimpleDateFormat("dd/MM/yyyy").parse("31/02/2000");
System.out.println("Date: " + d);
 

Ce code retourne la date suivante: Thu Mar 02 00:00:00 CET 2000

Pour forcer la classe SimpleDateFormat à retourner une erreur, il faut utiliser la méthode setLenient(false).

Le code suivant retournera une exception:

 
Sélectionnez

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.setLenient(false);
System.out.println("Date: " + sdf.parse("31/02/2000"));

java.text.ParseException: Unparseable date: "31/02/2000"

Créé le 12 octobre 2006  par bulbo

Il faut utiliser la propriété Lenient de l'objet Calendar, cela forcera le parsing de la date à échouer si la date est invalide.

Les messages d'exceptions indique même d'ou vient l'erreur ("MONTH", "DAY_OF_MONTH").

On peut donc utiliser ce problème en parsant la date et en voyant s'il y a une erreur :

 
Sélectionnez

public boolean estValide(int annee, int mois, int jour){
	Calendar c = Calendar.getInstance();
	c.setLenient(false);
	c.set(annee,mois,jour);        
	try{
	  c.getTime();  
	}
	catch(IllegalArgumentException iAE){
	  return false;
	}
 
	return true;
}

Remarques :

  • Ne pas oublier que pour un objet Calendar les mois commence à 0 et les jours à 1
  • L'exception est relevée lors du getTime() et non pas du set(), donc vous pourrez créer un calendar non valide mais pas l'utiliser
Créé le 25 mars 2007  par Morpheus2144

Lien : Comment forcer le parsing d'une Date à échouer en cas de Date incorrecte ?

Les codes sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Pour le reste, ce document constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Ce document issu de http://www.developpez.com est soumis à deux licences, en fonction des contributeurs : - Les contributions de Clément Cunin et Johann Heymes sont soumises aux termes de la la licence GNU FDL traduite en français ici. Permission vous est donnée de distribuer, modifier des copies des contributions de Clément Cunin et Johann Heymes tant que cette note apparaît clairement : "Ce document issu de http://www.developpez.com est soumis à la licence GNU FDL traduite en français ici. Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement". - Pour ce qui est des autres contributions : Copyright © 2014 Developpez LLC : Tous droits réservés Developpez LLC. Aucune reproduction, ne peut en être faite sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.