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 :

Optimisation de fonction


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut Optimisation de fonction
    Bonjour, j'ai une fonction que j'ai ecrit et qui marche mais qui ne me plait pas.
    Cette fonction prend un date et retourne un chaine de caractère reprennant la date de la manière suivante AAAAMMJJ.
    Je vous soumet ma méthode.
    Je n'aime pas le fait d'utiliser une date (Est ce qu'il y a mieux?)
    Je n'aime pas le fait d'utiliser des méthodes dépréciés (getYear ...)
    Je n'aime pas mon utilisation de la classe String et la concatenation.
    J'ai un soucis de décalage dans la date (year+1900, month+1, day+3)
    Merci pour votre regard avisé.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
        // formater AAAAMMJJ
        private static String Date2String (Date date){
     
            String string = new String();
     
     
            Integer year = new Integer(date.getYear() + 1900);
            Integer month = new Integer (date.getMonth() + 1);
            Integer day = new Integer (date.getDay() + 3);
     
            String stringYear = new String(year.toString());
            String stringMonth;
            String stringDay;
     
     
            if (month < 10){
                stringMonth = new String("0" + month.toString());
            }
            else{
                stringMonth = new String(month.toString());
            }
     
            if (day < 10){
                stringDay = new String("0" + day.toString());
            }
            else{
                stringDay = new String(day.toString());
            }
     
            string = stringYear + stringMonth + stringDay;
     
            return string;
     
        }

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Date d = Calendar.getInstance().getTime();
    DateFormat df = new SimpleDateFormat("yyyyMMdd");
    System.out.println(df.format(d));
    => 20080206

  3. #3
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Sans code deprecated :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private static String Date2String(Date date) {
      Calendar cal = new GregorianCalendar();
      cal.setTimeInMillis(date.getTime());
      SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
      return df.format(cal.getTime());
    }
    EDIT : grilled, et en mieux

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

    Citation Envoyé par xduris Voir le message
    Je n'aime pas le fait d'utiliser une date (Est ce qu'il y a mieux?)
    Qu'y a-t-il de gênant à une utiliser une Date pour représenter une date ?

    Citation Envoyé par xduris Voir le message
    Je n'aime pas mon utilisation de la classe String et la concatenation.
    Ici cela ne pose pas de problème particulier...


    Sinon j'aurais rajouté :
    • Je n'aime pas le nom de la méthode qui commence par une majuscule.
    • Je n'aime pas la duplication inutile des String avec les new String()



    Et surtout : je n'aime pas quand on oublie de consulter la docs ou les FAQs, car tu serais surement tomber sur SimpleDateFormat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        private static String toString (Date date) {
        	SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        	return sdf.format(date);
        }
    a++

  5. #5
    Membre expérimenté Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Par défaut
    Bonjour,

    Qu'y a-t-il de gênant à une utiliser une Date pour représenter une date ?
    Dans le cas présent, cela ne pose pas de problème, mais il me semble qu'il est quand même largement déconseillé d'utiliser les object Date lorsque cela n'est pas indispensable. Si je ne me trompe pas la recommandation au sujet des dates est de leur préférer l'utilisation de long.

    Bon ok, c'était juste pour chipotter un peu.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    Qu'y a-t-il de gênant à une utiliser une Date pour représenter une date ?


    Ici cela ne pose pas de problème particulier...


    Sinon j'aurais rajouté :
    • Je n'aime pas le nom de la méthode qui commence par une majuscule.
    • Je n'aime pas la duplication inutile des String avec les new String()



    Et surtout : je n'aime pas quand on oublie de consulter la docs ou les FAQs, car tu serais surement tomber sur SimpleDateFormat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        private static String toString (Date date) {
        	SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        	return sdf.format(date);
        }
    a++

    Je suis désolé de t'embeter encore mais ca me retourne un java.text.SimpleDateFormat@d547ad40

  7. #7
    Membre expérimenté Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Par défaut
    java.text.SimpleDateFormat@d547ad40
    Tu dois faire un toString() sur ton SimpleDateFormat.
    Tu es sûr d'avoir bien renvoyé sdf.format(date) et non pas simplement sdf?

  8. #8
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Citation Envoyé par vincent63 Voir le message
    Tu dois faire un toString() sur ton SimpleDateFormat.
    Tu es sûr d'avoir bien renvoyé sdf.format(date) et non pas simplement sdf?
    Ca ne compilerait même pas vu que la méthode est censée retourner un String

  9. #9
    Membre expérimenté Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Par défaut
    Ca ne compilerait même pas vu que la méthode est censée retourner un String
    J'suis peut-être allé un peu vite dans mon explication. Au temps pour moi, je recommence.

    Ne sachant pas comment le code fourni a été récupéré et réutilisé, (méthode ou pas méthode), et voyant la trace, j'en conclu que c'est le toString() du SimpleDateFormat qui a été utlisé (soit explicitement, soit implicitement). Donc que ce n'est pas le String renvoyé par sdf.format(date).

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut
    Citation Envoyé par vincent63 Voir le message
    Tu dois faire un toString() sur ton SimpleDateFormat.
    Tu es sûr d'avoir bien renvoyé sdf.format(date) et non pas simplement sdf?


    Merci pour ta réponse et merci à tout le monde

    La solution que j'ai retenu est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Date date = new Date();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
    fichier = new FileWriter(this.chemin + "/fichier" + simpleDateFormat.format(date) + ".txt");

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

Discussions similaires

  1. Optimisation des fonctions?
    Par JauB dans le forum DB2
    Réponses: 5
    Dernier message: 31/01/2007, 20h47
  2. Optimiser une fonction (trouver le minimum)
    Par Noel Gallagher dans le forum C
    Réponses: 2
    Dernier message: 27/11/2006, 06h46
  3. probleme d'optimisation de fonction
    Par franc82 dans le forum C++
    Réponses: 3
    Dernier message: 31/10/2006, 09h45
  4. Optimisation de fonction
    Par Elendhil dans le forum Assembleur
    Réponses: 2
    Dernier message: 19/06/2006, 15h03
  5. Optimisation de fonction ...
    Par dark_vidor dans le forum Langage
    Réponses: 10
    Dernier message: 02/01/2006, 11h50

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