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

Android Discussion :

[Timestamp et Date] Formater une date a partir d'un Timestamp


Sujet :

Android

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 208
    Par défaut [Timestamp et Date] Formater une date a partir d'un Timestamp
    Bonjour bonjour !

    Ça fait quelques heures que je me bat avec quelque chose qui semble tout bête : formater une Date pour quelle ressemble à ce que je souhaite.

    J'aimerais obtenir une Date de la forme :

    Vendredi 2 Octobre 2009

    Et tout cela a partir du Timestamp retourne par ma requête SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Timestamp MonTemps = new Timestamp(Long.parseLong(TmpDate));
    Timestamp est donc un long (1250261353135)
    La methode "tostring" me retourne : 2009-08-14 16:49:13.135
    Et la methode "togmtstring" : 14 Aug 2009 14:49:13 GMT

    J'aimerais avoir d'une part le nom du mois en Français, en entier, mais aussi celui du jour de la semaine.

    Pour ça j'ai tenté à plusieurs reprises de créer des SimpleDateFormat ou des DateFormat.
    J'ai tenté d'utiliser la classe Local pour les retourner en français (Locale.FRANCE => "fr_FR").

    Mais je n'ai pas du comprendre le fonctionnement, ça ne retourne jamais ce que je veux ^^

    Du coup, voici pèle-mêle mes trois derniers essais et ce qu'ils retournent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEE d MMMMM yyyy");
                    	DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, Locale.FRANCE);
                    	df = DateFormat.getTimeInstance(DateFormat.FULL);
     
                    	System.out.println("Date formate avec df : "+df.format(MonTemps));
                    	System.out.println("Date formate avec getDate : "+DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL,Locale.FRANCE).format(MonTemps));
     
                    	System.out.println("Date une fois formate : "+dateFormat.format(MonTemps));
    Retournent :

    Date formate avec df : 14:39:12 GMT+02:00
    Date formate avec getDate : 4, 2009 9 30 14:39:12 GMT+02:00
    Date une fois formate : 4 30 9 2009
    Bref, une petite explication serait la bienvenue.

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    utilise simplement SimpleDateFormat, avec son constructeur

    SimpleDateFormat(String pattern, Locale locale)

    LA javadoc de simpeldateformat est explicite sur les caractères et leur signification dans la pattern.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 208
    Par défaut
    Merci de ta réponse tchize_

    J'ai déjà tenté mais je ne dois pas l'utiliser correctement, puisque le format de la date retourné n'est pas celui que j'ai spécifié avec mon pattern.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE d MMMM yyyy", Locale.FRANCE);
    Me retourne :

    7 3 10 09

    Alors que, si j'en crois la doc :

    M month in year (Text & Number) July & 07
    E day of week (Text) Tuesday
    d day in month (Number) 10
    y year (Number) 1996


    (Text): 4 or more pattern letters → use the full form, less than 4 pattern letters → use a short or abbreviated form if one exists.
    Voili voilou

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(new SimpleDateFormat("EEEE d MMMM yyyy",Locale.FRANCE).format(new Date()));
    me sort bien
    t'as probablement du modifier ton dateFormat entre le moment ou tu appelle son constructeur et le moment ou tu l'utilise.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 208
    Par défaut
    Et bien tu as de la chance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println("Test tchize_ : "+new SimpleDateFormat("EEEE d MMMM yyyy",Locale.FRANCE).format(new Date()));
    Me retourne :

    Test tchize_ : 7 3 10 2009

  6. #6
    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,

    Quel est la version de la JVM ? Sur quel système d'exploitation ?

    a++

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par themoye Voir le message
    Et bien tu as de la chance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println("Test tchize_ : "+new SimpleDateFormat("EEEE d MMMM yyyy",Locale.FRANCE).format(new Date()));
    Me retourne :
    soit t'as ue version de la jvm bizzare, soit t'as un os curieux.
    Que donne ce code chez toi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    		System.out.println("os: "+System.getProperty("os.name")+", "+System.getProperty("os.arch")+","+System.getProperty("os.version"));
    		System.out.println("java: "+System.getProperty("java.vendor")+", "+System.getProperty("java.version"));
    		System.out.println("java vm: "+System.getProperty("java.vm.name")+", "+System.getProperty("java.vm.vendor")+", "+System.getProperty("java.vm.version"));
    		System.out.println("java specs: "+System.getProperty("java.vm.specification.name")+", "+System.getProperty("java.vm.specification.vendor")+", "+System.getProperty("java.vm.specification.version"));
    		System.out.println(Locale.FRANCE);
    		System.out.println(new java.text.SimpleDateFormat("EEEE d MMMM yyyy",Locale.FRANCE).format(new java.util.Date()));
    		System.out.println(new java.text.SimpleDateFormat("EEEE d MMMM yyyy",new Locale("fr","FR")).format(new java.util.Date()));

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 208
    Par défaut
    Yop, merci pour vos réponses

    Alors, je développe pour Adroid.

    Voici ce que tu m'as demandé tchize_ :

    os: Linux, OS_ARCH,2.6.27-00110-g132305e
    java: The Android Project, 0
    java vm: Dalvik, The Android Project, 1.0.1
    java specs: Dalvik Virtual Machine Specification, The Android Project, 0.9
    fr_FR
    7 3 10 2009
    7 3 10 2009
    On voit bien que ce que me retourne la date est plus ou moins correcte, simplement le jour de la semaine et le mois ne sont pas exprimés en texte.

    Pour ça j'ai tenté de changer getDateInstance et getTimeInstance en précisant le format DateFormat.FULL ou DateFormat.LONG, mais rien n'y fait, je reste en caractères numériques

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    as-tu essayé en langue anglaise? La jvm de android est assez particulière (je déplace au passage le sujet) puisqu'il s'agit d'un jvm pour télépone mobile. Peut etre que la langue française n'est simplement pas disponible -> fallback vers des chiffres

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 208
    Par défaut
    Je pense que la langue française est dispo, puisque utilisée dans de nombreuses applications...

    Puis la doc d'Android y fait référence alors bon =o

    Faudrait que je mate le code sources des samples Android...

    M'enfin merci de tes interventions !

    edit : j'ai posté la même requête sur un forum de dev Android, on verra ce que l'on m'y dit de beau

Discussions similaires

  1. [Dates] Formater une date dans un tableau
    Par orleans dans le forum Langage
    Réponses: 14
    Dernier message: 25/01/2008, 05h46
  2. [Dates] Formater une date
    Par miltonis dans le forum Langage
    Réponses: 3
    Dernier message: 25/04/2007, 19h15
  3. Réponses: 3
    Dernier message: 18/11/2006, 21h44
  4. [Dates] formater une date
    Par mikebranque dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 23h19

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