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

Struts 1 Java Discussion :

nombre de jour entre deux timestamp


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    nombre de jour entre deux timestamp
    bonjour,
    comment calculer le nombre de jour entre deux timestamp
    merci...

  2. #2
    Membre actif
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Timestamp timeStamp1 // déjà initialisé
    Timestamp timeStamp2 // déjà initialisé
    long millisDifference; // le long ou tu met la différence en millisecondes
    if(timeStamp1 .compareTo(timeStamp2)>=0){
    millisDifference = timeStamp1.getTime() - timeStamp2 .getTime();
    }
    else{
    millisDifference = timeStamp2.getTime() - timeStamp1 .getTime();
    }


    La tu as en millisecondes la différence entre tes deux timestamp....
    Ca te fait déjà une tite piste....
    N'oubliez pas que l'eau ça rouille !
    est votre ami !

  3. #3
    Membre averti
    Donc tu divises par (1000 * 3600 * 24)

    Au passage, si tu cherches la valeur absolue de ta différence, autant utiliser la méthode prévue pour, Math.abs(), plutôt qu'un if lourd.

  4. #4
    Membre régulier
    j'ai reussi a ecrire une fonction qui retourne le nombre de jour entre deux timestamp dont le code est le suivant:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        public static Long diffDate(Timestamp timeStamp1,Timestamp timeStamp2) throws Exception {
            long jourDifference;
            Calendar calendarDateDebut = Calendar.getInstance();
            Calendar calendarDateFin = Calendar.getInstance();
            calendarDateDebut.setTime(timeStamp1);
            calendarDateFin.setTime(timeStamp2);
            if(timeStamp1 .compareTo(timeStamp2)>=0){
                jourDifference =  calendarDateDebut.get(Calendar.DAY_OF_YEAR) - calendarDateFin.get(Calendar.DAY_OF_YEAR);
            } else {
                jourDifference =  calendarDateFin.get(Calendar.DAY_OF_YEAR) - calendarDateDebut.get(Calendar.DAY_OF_YEAR);
            }
            return jourDifference;
        }

  5. #5
    Membre averti
    C'est pas très gentil ça de ne pas suivre les conseils des gens
    Je propose cette méthode alternative :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static Long diffDate(Timestamp timeStamp1,Timestamp timeStamp2) throws Exception {
    	long nbMilliSec = timeStamp2.getTime() - timeStamp1.getTime();
    	double nbJours = ((double)nbMilliSec) / (1000 * 3600 * 24);
    	return Math.abs(Math.round(nbJours));
    }

  6. #6
    Membre régulier
    Citation Envoyé par osman.amine
    j'ai reussi a ecrire une fonction qui retourne le nombre de jour entre deux timestamp dont le code est le suivant:
    Ta fonction ne renverra pas le résultat attendu dans tous les cas.

    Par exemple pour date1 = 31/12/2007 et date2 = 01/01/2008, le résultat attendu est 1 jour. Or date1.get(Calendar.DAY_OF_YEAR) = 365 et date2.get(Calendar.DAY_OF_YEAR)= 1,
    Date2>date1 donc ta fonction renvoie 1-365 = -364 ...

    La fonction de mixouille est à la fois, plus concise et renvoie le résultat correct...

    Sinon il existe une bibliothèque spécialisée : joda time ( http://joda-time.sourceforge.net/ ) qui permet une gestion des différentes notions associées au temps en java.

  7. #7
    Membre régulier
    bonjour,
    merci pour vos message. je les accepte avec tout mon coeur.
    voila la dernière version de ma fonction.
    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
        public static Long diffDate(Timestamp timeStamp1,Timestamp timeStamp2) throws Exception {
            long jourDifference = 0;
            if((timeStamp1 != null) && (timeStamp2 != null)){
            Calendar calendarDateDebut = Calendar.getInstance();
            Calendar calendarDateFin = Calendar.getInstance();
            calendarDateDebut.setTime(timeStamp1);
            calendarDateFin.setTime(timeStamp2);
            if(timeStamp1 .compareTo(timeStamp2)>=0){
                jourDifference =  (calendarDateDebut.get(Calendar.DAY_OF_YEAR) + (calendarDateDebut.get(Calendar.YEAR) * 365)) - (calendarDateFin.get(Calendar.DAY_OF_YEAR) + (calendarDateFin.get(Calendar.YEAR) * 365));
            } else {
                jourDifference =  (calendarDateFin.get(Calendar.DAY_OF_YEAR) + (calendarDateFin.get(Calendar.YEAR) * 365)) - (calendarDateDebut.get(Calendar.DAY_OF_YEAR) + (calendarDateDebut.get(Calendar.YEAR) * 365));
            }
            }
            return jourDifference;
        }

  8. #8
    Membre régulier
    Citation Envoyé par mixouille
    C'est pas très gentil ça de ne pas suivre les conseils des gens
    Je propose cette méthode alternative :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static Long diffDate(Timestamp timeStamp1,Timestamp timeStamp2) throws Exception {
    	long nbMilliSec = timeStamp2.getTime() - timeStamp1.getTime();
    	double nbJours = ((double)nbMilliSec) / (1000 * 3600 * 24);
    	return Math.abs(Math.round(nbJours));
    }
    merci infinément...
    je vien d'appliquer ta fonction qui est plus exacte que la mienne.
    c'est l'avantage du traval en collaboration.