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

Langage Java Discussion :

Formatter une date


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 93
    Points : 39
    Points
    39
    Par défaut Formatter une date
    Bonjour,

    Je cherche à obtenir une date sous forme YYYYDDDHH (année/jour de l'année/heure du jour) avec des 0 si besoin (si on est le 30 jour de l'année 2006 à 8 heure je veux obtenir 200603008).

    J'utilise actuellement:
    calendar.get(Calendar.YEAR),
    calendar.get(Calendar.DAY_OF_YEAR),
    calendar.get(Calendar.HOUR_OF_DAY)

    mais je n'arrive pas à formatter le calendar afin d'avoir un zero devant dans le cas d'une heure à un digit ou d'un jour à un ou deux digits.

    J'essaye d'utiliser SimpleDateFormat("YYYYDDDHH").getCalendar() pour obtenir mon calendar, mais sans succès...

    Merci beaucoup de votre aide....

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Tu peux utiliser DecimalFormat...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NumberFormat formatter = new DecimalFormat("000");
    String dayString = formatter.format(calendar.get(Calendar.DAY_OF_YEAR));
    Tu fais pareil pour l'année et l'heure, et tu concatènes...

  3. #3
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pourquoi se compliquer la vie alors qu'il existe des outils tout fait, comme par exemple en utilisant la classe SimpleDateFormat comme indiqué dans la FAQ : Comment convertir une date en chaîne ? !!!

    a++

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 93
    Points : 39
    Points
    39
    Par défaut merci mais probleme d'instantiation
    Merci beaucoup pour votre réponse rapide

    Toutefois il n'est pas possible d'instancier NumberFormat("000")...

  5. #5
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par Thomas_ats
    Merci beaucoup pour votre réponse rapide

    Toutefois il n'est pas possible d'instancier NumberFormat("000")...
    Mais DecimalFormat, oui (j'avais fait une petite faute sur mon exemple que j'ai corrigé)

    adiGuba, je ne crois pas que SimpleDateFormat sait faire le jour de l'année avec forcément 3 chiffres, si?

  6. #6
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ®om
    adiGuba, je ne crois pas que SimpleDateFormat sait faire le jour de l'année avec forcément 3 chiffres, si?
    Non... mais rien ne t'empêche de rajouter toi même le zéro dans le pattern... de toute manière l'heure ne pourra pas dépasser 24...

    a++

  7. #7
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par adiGuba
    Non... mais rien ne t'empêche de rajouter toi même le zéro dans le pattern... de toute manière l'heure ne pourra pas dépasser 24...

    a++
    Non mais le jour de l'année, il est compris entre 1 et 366...
    Si c'est 45, comment tu fais 045, pour que ça marche aussi pour 145 par exemple, que ça ne fasse pas 0145?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 93
    Points : 39
    Points
    39
    Par défaut merci
    merci DecimalFormat à réglé mon problème

    merci à tous

  9. #9
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ®om
    Non mais le jour de l'année, il est compris entre 1 et 366...
    Si c'est 45, comment tu fais 045, pour que ça marche aussi pour 145 par exemple, que ça ne fasse pas 0145?
    En réalité tu n'a même pas besoin du 0 (sauf si tu veux le faire pour les mois).

    SimpleDateFormat utilise le nombre de caractères du pattern comme nombre de chiffres à utiliser pour représenter la valeur (il augmentera toutefois cette taille si le nombre est plus grand). Ex :

    (D : jour de l'année) :
    D --> 310 (sur 3 chiffres car le nombre est plus grand)
    DDDD --> 0310

    (d : jour du mois) :
    d --> 6
    dddd --> 0006

    Il y a quelques exceptions selon le type de l'élément :
    • Pour les années avec yy il n'affichera que les deux derniers chiffres (et tronquera donc aux centaines). Ex :
      yy --> 06
      yyyy --> 2006
      yyyyy --> 002006
    • Pour les mois, a partir de 3 M il commencera a afficher le mois en lettres. Ex :
      M --> 11
      MM --> 11
      MMM --> nov.
      MMMM --> novembre
    • Pour les textes, la valeur courte sera affiché (si elle existe), sauf si le pattern représente 4 éléments (ou plus)


    Je n'invente rien tout est dans la doc : SimpleDateFormat


    a++

Discussions similaires

  1. [MySQL] Formatter une date en fonction du contexte utilisateur
    Par CaviarNAS dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/11/2010, 10h08
  2. Formatter une date
    Par Golzinne dans le forum Silverlight
    Réponses: 10
    Dernier message: 25/01/2010, 16h50
  3. Formatter une date
    Par Louis-Guillaume Morand dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 30/03/2007, 11h31
  4. Formatter une date
    Par r0d dans le forum Langage
    Réponses: 5
    Dernier message: 09/02/2007, 14h38

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