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 :

Calcul dans un String.format


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de zolotaya
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 93
    Par défaut Calcul dans un String.format
    Bonjour,

    J'ai une petite question à propos des format en java.
    J'ai défini un format de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public static final String FORMAT_DATE = 
    			"AN=%1$tY "+
    			"JOUR=%1$tj ";
    et donc mon appel qui va bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String.format(FORMAT_DATE, maDate);
    Ce que je voudrais c'est avoir le nombre d'année depuis 1900.
    J'ai donc essayé différentes choses du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public static final String FORMAT_DATE = 
    			"AN="+(Integer.parseInt(%1$tY) - 1900)+
    			"JOUR=%1$tj ";
    mais à chaque fois le parseInt passe avant l'évaluation du ma date. J'ai donc des exceptions du genre :
    Caused by: java.lang.NumberFormatException: For input string: "%1$tY"

    Quelqu'un sait-il si ce que je veux est possible et si oui comment ?

    Merci par avance.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Il n'y a pas de format pour ça, et c'est bien normal : qui, sur cette planète, s'amuse à dire qu'on est "112 années après l'an 1900" ?

    La seule solution est de, d'abord calculer l'année de la date en question, puis la différence entre 1900 et cette année, puis ensuite l'afficher dans ton format(), sous forme d'entier parfaitement normal qui n'a rien à voir avec une date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Calendar cal = Calendar.getInstance();
    cal.setTime(maDate);
    int year = cal.get(Calendar.YEAR);
    int year1900 = year - 1900;
    Je te laisse faire le reste.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Il n'y a pas de format pour ça, et c'est bien normal : qui, sur cette planète, s'amuse à dire qu'on est "112 années après l'an 1900" ?
    ben zolotaya

  4. #4
    Membre confirmé Avatar de zolotaya
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 93
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Il n'y a pas de format pour ça, et c'est bien normal : qui, sur cette planète, s'amuse à dire qu'on est "112 années après l'an 1900" ?
    Que ce soit 1900 ou une autre date, je ne pense pas être le seul développeur à faire des opérations sur des dates

    Après oui je peux passer par un calandar, mais je voulais utilsé le format pour mes logs, avec des messages prédéfinis...

    Je m'en accomoderai. Je trouve juste cela étrange que java évalue d'abord le Integer.parseInt avant d'avoir rempli les champs du format mais pourquoi pas ...

    Dans tous les cas merci pour les réponses.
    Zolotaya

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par zolotaya Voir le message
    Que ce soit 1900 ou une autre date, je ne pense pas être le seul développeur à faire des opérations sur des dates
    Qui a parlé d'opération ? On parle de formats de dates.

    Citation Envoyé par zolotaya Voir le message
    Après oui je peux passer par un calandar, mais je voulais utilsé le format pour mes logs, avec des messages prédéfinis...
    Oui, bon, eh bien format() ne propose pas d'aller jusque-là. Il faudra le faire toi-même.

    Citation Envoyé par zolotaya Voir le message
    Je trouve juste cela étrange que java évalue d'abord le Integer.parseInt avant d'avoir rempli les champs du format mais pourquoi pas ...
    N'importe quel langage impératif fonctionne comme cela, pourtant.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Parser une url dans un string au format texte
    Par andromeda dans le forum C#
    Réponses: 2
    Dernier message: 02/02/2009, 04h16
  2. Réponses: 3
    Dernier message: 19/02/2008, 14h36
  3. Sujet : Java - calculer une formule arithmétique contenue dans un "String"
    Par uchimizu dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 10/02/2008, 13h38
  4. Réponses: 2
    Dernier message: 31/10/2007, 14h58
  5. Format d'un double stocké dans une String
    Par ep31 dans le forum Struts 1
    Réponses: 5
    Dernier message: 20/09/2007, 12h27

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