Comment formater une date en Java

Publié le 16 Mars 2010

L'affichage ou la lecture d'une date peut vite devenir complexe si on commence à manipuler chaque élément (année, mois, jours, etc ...) indépendemment.

Heureusement en java il existe la classe java.text.SimpleDateFormat qui permet de convertir une Date en String et vice versa.

Son utilisation se base sur un pattern qui représente le fomat à utiliser. Ainsi pour utiliser une date au format SQL <année>-<mois>-<jour>, le pattern sera le suivant "yyyy-MM-dd".

Mais passons tout de suite à un petit exemple:

package com.over-blog.patatos.utils.exemples;

import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateExemple{

   public static void main(String[] args) throws Exception{

       SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
       
        // date to string
        Date aujourdhui = new Date();
        System.out.println("Aujourd'hui : "+dateFormat.format(aujourdhui));
       
        // string to date
        String dateTexte = "2010-03-17";
        Date hier = dateFormat.parse(dateTexte);
        System.out.println("Hier : "+hier.toString());

   }


}

Ce qui donne lors de l'exécution :

Aujourd'hui : 2010-03-18
Hier : Wed Mar 17 00:00:00 CET 2010

Rédigé par Bliz

Publié dans #Java

Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
B
<br /> La classe SimpleDateFormat n'est pas thread-safe. Ce qui signifie qu'il faut éviter de partager<br /> une instance de SimpleDateFormat entre plusieurs threads.<br /> <br /> <br /> Par exemple il faut éviter d'utiliser une propriété statique du genre:<br /> <br /> <br /> public static<br /> final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");<br /> <br /> <br />  <br /> <br /> <br /> Dans ce cas il faut préférer déclarer uniquement le pattern en static :<br /> <br /> <br />  <br /> <br /> <br /> public static<br /> final String DATE_PATTERN = "yyyy-MM-dd";<br /> <br /> <br />  <br /> <br /> <br /> et créer l'instance du SimpleDateFormat dans une variable de locale.<br /> <br /> <br />  <br /> <br /> <br /> Où encore utiliser une solution à base de ThreadLocal qui assurera qu'une instance de<br /> SimpleDateFormat n'est pas partagée entre threads.<br /> <br /> <br />  <br /> <br /> <br /> (PS: Merci à didi pour la remarque)<br />
Répondre