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 :

problème avec Date


Sujet :

Collection et Stream Java

  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut problème avec Date
    salut
    je cherche a faire la difirence entre la date1 aujourd'huit et la date d'une journée précedente date2
    le problème comment déclarer date1 et date2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date2 ="19 avril 2007";//ça marche pas
    car j'ai essayé de déclaré date1 par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    java.util.Date d=new java.util.Date();
     
    DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault());
     Date   date1 =  df.format(d);//ça ne marche pas
    puis faire la diffirence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int dif = date1.getTime()-date2.getTime()//(24*60*60*1000);
    System.out.println("la diffirence est " + dif );
    merci par l'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2005
    Messages : 102
    Par défaut
    Salut,

    Utilise plutôt java.util.Calendar, tu pourras setter tes dates et ensuite faire des compareTo etc. Vas voir sur le site de sun pour avoir les spec détaillées.

    A plus,
    Mathieu

  3. #3
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    Salut,

    Pour tout ce qui est calcul sur les date tu devrait utiliser l'API joda-time qui est puissante et tres simple d'utilisation. Tu peux ainsi faire des somme ou difference de date tres facilement.

    ++

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    salut
    pourquoi cette déclaration ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public static void main(String[] args) {
    Date date1 = null;
    DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
    date1 = df.parse("23 Mars 2007");
    System.out.println(date1);
    }
    un message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    unported exception JAVA.text .parser exception ;must be caught or declared to be thrown

  5. #5
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Citation Envoyé par ulysse031
    pourquoi cette déclaration ne marche pas
    Parce que la méthode "DateFormat.parse()" peut renvoyer une Exception (une "ParseException" plus précisemment), et que ta méthode "main()" n'intercepte pas cette possibilité : regarde du côté de ce tutoriel sur "Les exceptions et les bonnes pratiques".

  6. #6
    Membre expérimenté Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Par défaut
    Pour les dates, voici ma méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Calendar calendar = new GregorianCalendar();
    Date trialTime = new Date();
    calendar.setTime(trialTime);
     
    DateFormat df = DateFormat.getDateInstance( DateFormat.FULL , Locale.FRANCE );
     
    String str = new String(df.format( calendar.getTime()) );

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    voila la modification
    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
     
     
    java.util.Date date1=new java.util.Date();
      java.util.Date date2=new java.util.Date();
       DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault());
                   try{
     
                   date1 =df.parse("18 Avril 2007");
                   System.out.println("date: "+df.format(date2));
     
                   System.out.println(dif(date1,date2));
                   }
                   catch(Exception e){
                     e.printStackTrace();
                   }
    et
    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
     
     
    public static int dif (Date date1,Date date2){
        int result =0;
        Calendar midDate =Calendar.getInstance();
        Calendar endDate=Calendar.getInstance();
        midDate.setTime(date1);
        endDate.setTime(date2);
        endDate.add(Calendar.DATE,1);
        while (midDate.before(endDate)){
          if (midDate.get(Calendar.DAY_OF_WEEK)!= Calendar.SATURDAY &&midDate.get(Calendar.DAY_OF_WEEK)!=Calendar.SUNDAY) result++;
        midDate.add(Calendar.DATE,1);
        }
        return(result);
     
     
      }
    mais le problème au lieu d'afficher 1 ça mafiche 3

  8. #8
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Parce que tu t'es trompé sur ton décalage de 1.
    Il fallait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    endDate.add(Calendar.DATE,-1);

  9. #9
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    merci
    ça marche trés bien,just une question est ce que cette méthode marche souvent plutot est ce que elle est preférable pour calculer la difirence

  10. #10
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Ca me semble une bonne façon de faire, surtout que tu prends en compte les jours non week end et que je ne connais aucune API qui fait ça en standard ...
    N'oublie pas de mettre en résolu

  11. #11
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    merci encore

  12. #12
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    bonjour voila j'ai encore un pb avec date
    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
    35
    36
    37
    38
    39
    40
    41
     
     
     
    Date date1=new Date();
    Date date2=new Date();
    DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault());
     
    // cette partie pour récupérer la valeur de la date qui se trouve dans la table 
    while (resultat.next()) {
    da = resultat.getString("date") ;
    }
    // calculer  le difirence 
    try{
    date1 =df.parse(da);
     
    System.out.println(dif(date1,date2));
     
     
    }
    catch(Exception eh){
    eh.printStackTrace();
    }
     
     
    //méthode qui fait calculer la difirence (dif)
     
    public static int dif (Date date1,Date date2){
                           int result =0;
                           Calendar midDate =Calendar.getInstance();
                           Calendar endDate=Calendar.getInstance();
                           midDate.setTime(date1);
                           endDate.setTime(date2);
                           endDate.add(Calendar.DATE,-1);
                           while (midDate.before(endDate)){
                             if (midDate.get(Calendar.DAY_OF_WEEK)!= Calendar.SATURDAY &&midDate.get(Calendar.DAY_OF_WEEK)!=Calendar.SUNDAY) result++;
                           midDate.add(Calendar.DATE,1);
                           }
                           return(result);
     
     
                         }

    date2(la date actuelle) et date1 (date qui trouve dans la table par exemple 18 avril 2007) mais le malheur la diffirence égale toujours 0 mais pourquoi

  13. #13
    Membre éprouvé Avatar de Tazmanian Devil
    Profil pro
    Inscrit en
    Février 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 119
    Par défaut
    Je viens d'essayer ton code (en remplacant "da" par "16 Avril 2007" par exemple et il fonctionne correctement, donc je pense que c'est lors de ta récup dans ta base que ca ne fonctionne pas.

    Peux tu en debug verifier le contenu de da et date1 sur la ligne
    date1 =df.parse(da);

    Je pense que si tu as zero c'est que date1 n'est pas modifiée et contient la date du jour.

  14. #14
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    apres l'execution

    21 avril 2007 // valeur de la table da
    la date récenteMon Apr 23 14:16:07 CEST 2007// date de la table date1
    la date actuelleSat Apr 21 00:00:00 CEST 2007// date actuelle date2
    0 // dif

  15. #15
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Question con si tu inverse date1 et date2 (j'ai eu souvent des problèmes de différences de date en inversant la date de début et de fin)

  16. #16
    Membre éprouvé Avatar de Tazmanian Devil
    Profil pro
    Inscrit en
    Février 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 119
    Par défaut
    C'est normal puisque dans ta méthode tu enleve les samedi et dimanche, et que le 21 est un Samedi, donc Samedi (0) + Dimanche(0) egal (celui qui dit la tete à toto sera battu )

  17. #17
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    je n'ai pas compris tout
    tu peux modifier le code pour que ça fonctionne


    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
     
    public static int dif (Date date1,Date date2){
                           int result =0;
                           Calendar midDate =Calendar.getInstance();
                           Calendar endDate=Calendar.getInstance();
                           midDate.setTime(date1);
                           endDate.setTime(date2);
                           endDate.add(Calendar.DATE,-1);
                           while (midDate.before(endDate)){
                             if (midDate.get(Calendar.DAY_OF_WEEK)!= Calendar.SATURDAY &&midDate.get(Calendar.DAY_OF_WEEK)!=Calendar.SUNDAY) result++;
                           midDate.add(Calendar.DATE,1);
                           }
                           return(result);
     
     
                         }

  18. #18
    Membre éprouvé Avatar de Tazmanian Devil
    Profil pro
    Inscrit en
    Février 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 119
    Par défaut
    ben si tu veux compter tous les jours (Samedi et dimanche inclus) enleve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             if (midDate.get(Calendar.DAY_OF_WEEK)!= Calendar.SATURDAY &&midDate.get(Calendar.DAY_OF_WEEK)!=Calendar.SUNDAY)

  19. #19
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    merci encore

  20. #20
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    N'oublie pas de mettre en résolu ....

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

Discussions similaires

  1. [Dates] problème avec date et mktime
    Par gloubi dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2007, 17h59
  2. [Dates] Problème avec date (heure qui varie)
    Par Death83 dans le forum Langage
    Réponses: 10
    Dernier message: 05/08/2006, 02h19
  3. Problème avec date dans requête
    Par alain94 dans le forum Access
    Réponses: 2
    Dernier message: 22/05/2006, 07h49
  4. Problème avec "Date()" en mode runtime
    Par bwalbourg dans le forum Runtime
    Réponses: 1
    Dernier message: 25/01/2006, 10h51
  5. [MySQL] Problème avec DATE SUB et INTERVAL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/01/2006, 00h36

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