bonjour,
comment calculer le nombre de jour entre deux timestamp
merci...
Version imprimable
bonjour,
comment calculer le nombre de jour entre deux timestamp
merci...
La tu as en millisecondes la différence entre tes deux timestamp....Code:
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(); }
Ca te fait déjà une tite piste....
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.
j'ai reussi a ecrire une fonction qui retourne le nombre de jour entre deux timestamp dont le code est le suivant:
Code:
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; }
C'est pas très gentil ça de ne pas suivre les conseils des gens ;)
Je propose cette méthode alternative :
Code:
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)); }
Ta fonction ne renverra pas le résultat attendu dans tous les cas.Citation:
Envoyé par osman.amine
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.
bonjour,
merci pour vos message. je les accepte avec tout mon coeur.
voila la dernière version de ma fonction.
Code:
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; }
merci infinément...Citation:
Envoyé par mixouille
je vien d'appliquer ta fonction qui est plus exacte que la mienne.
c'est l'avantage du traval en collaboration.