IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Formatage de Date (st, nd, rd, th)


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut Formatage de Date (st, nd, rd, th)
    Salut,
    je cherche comment formatter une date suivant ce format :
    - 1st July 07
    - 2nd July 07
    - 3rd July 07
    - 4th July 07

    Pour le moment j'en suis la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Date date = new Date();
    SimpleDateFormat formatter = new SimpleDateFormat("MMMMMMMM yy", Locale.ENGLISH);
    System.out.println(formatter.format(date));
    Il me manque donc l'affichage du suffixe st, nd, rd et th

    Merci^^

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par metalpetsFR
    Il me manque donc l'affichage du suffixe st, nd, rd et th
    Le SimpleDateFormat ne te permet pas de le faire directement.
    Il te faut tester le jour du mois pour affecter manuellement le suffixe adéquat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Date date = new Date();
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    String suffixe = "th";
    switch(calendar.get(Calendar.DAY_OF_MONTH)) {
        case 1 : {
            suffixe = "st";
            break;
        }
        case 2 : {
            suffixe = "nd";
            break;
        }
        case 3 : {
            suffixe = "rd";
            break;
        }
    }
    SimpleDateFormat df = new SimpleDateFormat("dd MMMM yy");
    String formattedDate = df.format(date).replaceAll("^(\\d+)", "$1" + suffixe);
    System.out.println(formattedDate);
    Remarque : il est inutile de mettre 8 M pour avoir le mois en toutes lettres, 4 suffises .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Bonjour,

    Je suis arrivé à la même conclusion que M. y@m's mais je n'utilise pas d'expression régulière. Il existe un moyen plus "élégant":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Date date = new Date();
    		Calendar calendar = Calendar.getInstance();
    		calendar.setTime(date);
    		String suffix = "th";
    		switch(calendar.get(Calendar.DAY_OF_MONTH)) {
    		    case 1 : {
    		        suffix = "st";
    		        break;
    		    }
    		    case 2 : {
    		        suffix = "nd";
    		        break;
    		    }
    		    case 3 : {
    		        suffix = "rd";
    		        break;
    		    }
    		}
    		String format = "dd'" + suffix + "' MMMM yy";
    		SimpleDateFormat df = new SimpleDateFormat(format);
    		System.out.println(df.format(date));
    J'ajoute le suffixe dans le string de formatage et j'indique à SimpleDateFormat de ne pas interpréter le code en l'entourant des deux apostrophes.

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par jowo
    J'ajoute le suffixe dans le string de formatage et j'indique à SimpleDateFormat de ne pas interpréter le code en l'entourant des deux apostrophes.
    Bien vu .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut
    J'avais obtenu la meme conclusion et j'ai utilisé la meme technique que vous décrivez.

    Merci beaucoup,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Calendar calendar = GregorianCalendar.getInstance(Locale.ENGLISH);
    calendar.setTime(date);
     
    int dayOfMounth = calendar.get(Calendar.DAY_OF_MONTH);
    StringBuffer buffer = new StringBuffer();
    buffer.append(dayOfMounth);
    if (dayOfMounth == 1) {
    	buffer.append("st ");
    } else if (dayOfMounth == 2) {
    	buffer.append("nd ");
    } else if (dayOfMounth == 3) {
    	buffer.append("rd ");
    } else {
    	buffer.append("th ");
    }
    buffer.append(new SimpleDateFormat("MMMM yy",Locale.ENGLISH).format(date));

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] formatage cellule date
    Par jeff37 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/05/2006, 22h31
  2. Formatage de date en diverses langues
    Par Caroline1 dans le forum Access
    Réponses: 6
    Dernier message: 26/04/2006, 14h47
  3. Formatage de date et 0
    Par christel1982 dans le forum ASP
    Réponses: 16
    Dernier message: 03/11/2005, 11h35
  4. [MSSQL][SQLDATE] Formatage de dates
    Par djskyz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 15/09/2004, 10h36
  5. [tomcat] Formatage de date en FR
    Par PeteMitchell dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 10/05/2004, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo