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 :

[Date]DateFormat + locale


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 16
    Par défaut [Date]DateFormat + locale
    Bonjour,

    J'ai besoin de formatter des dates en fonction de la locale.
    Ces dates doivent être au format numérique.
    ce DateFormat répond presque à mes besoins:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
    Le problème c'est qu'il ne prend que 2 chiffres en compte pour l'année et j'en ai besoin de 4...

    Quelqu'un aurait-il une idée svp?

    Merci.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut
    Bonjour,
    la classe SimpleDateFormat devrait pouvoir t'aider :
    http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

  3. #3
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 16
    Par défaut
    Oui mais je ne vois pas quel pattern lui passer pour avoir le même pattern que DateFormat.short avec l'année sur 4 chiffes...

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut
    Je sais pas quel est le format DateFormat.short mais avec SimpleDateFormat tu peux formatter comme bon te semble :

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		           SimpleDateFormat s = new SimpleDateFormat("yyyyMMdd");
    		           System.out.println(s.format(new Date()));

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    FreshVic, ta solution est bonne mais je ne pense pas que ce soit ce que veux tarzent puisque tu perds du coups toutes les infos relatives à la locale... Il veut afficher la date dans le format court habituelle selon la locale de l'utilisateur, c'est à dire :
    • dd/MM/yy pour fr_FR
      MM-dd-yy pour en_US
      etc...

    Ceci est possible grâce à la méthode DateFormat.getDateInstance()...

    Une solution serait de modifier le pattern renvoyé... Il semble que ce soit un objet SimpleDateFormat donc le code suivant devrait faire l'affaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
           DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
           if (df instanceof SimpleDateFormat) {
               SimpleDateFormat sdf = (SimpleDateFormat) df;
               String pattern = sdf.toLocalizedPattern();
               if (pattern.indexOf("yyyy")==-1) {
                   df = new SimpleDateFormat(pattern.replaceFirst("yy", "yyyy"));
               }
           }
    Si l'objet renvoyé n'est pas un SimpleDateFormat on ne peut rien faire.
    Sinon on crée un nouveau SimpleDateFormat avec l'année sur 4 chiffres si ce n'est pas le cas...

    a++

  6. #6
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 16
    Par défaut
    Merci adiGuba.

    J'avais déjà cette solution temporaire à peu de chose près:
    Au lieu d'avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (pattern.indexOf("yyyy")==-1) {
                   df = new SimpleDateFormat(pattern.replaceFirst("yy", "yyyy"));
               }
    J'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df = new SimpleDateFormat(pattern.replaceFirst("y+", "yyyy"));
    (j'ai trouvé une locale avec un seul y...)

    Je pensais qu'il y avait un moyen moins détourné d'arriver à ce que je veux.

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut
    Citation Envoyé par adiGuba
    Salut,


    FreshVic, ta solution est bonne mais je ne pense pas que ce soit ce que veux tarzent puisque tu perds du coups toutes les infos relatives à la locale...
    Effectivement en relisant le post il est bien specifié et souligné :"en fonction de la locale" , je conseil donc a tout les debutant en java d'etre sur de savoir lire avant de se mettre au JAVA et surtout avant de vouloir aider les autres !!
    Dsl

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

Discussions similaires

  1. [11gR2] Passer une date/heure locale en GMT/BST
    Par shaun_the_sheep dans le forum SQL
    Réponses: 2
    Dernier message: 13/04/2015, 16h25
  2. Convertir une date en local en php
    Par Mecano14 dans le forum Langage
    Réponses: 4
    Dernier message: 23/12/2009, 18h19
  3. [Dates] heure locale
    Par nico33307 dans le forum Langage
    Réponses: 1
    Dernier message: 16/10/2007, 09h24
  4. Réponses: 3
    Dernier message: 18/11/2006, 21h44
  5. [Date] Locale vs US
    Par ludovic.fernandez dans le forum Windows
    Réponses: 2
    Dernier message: 25/05/2004, 16h17

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