Bonjour
j'ai besoin de comparer deux Date, pour en extraire la difference en
nombre de jour. Que me conseillez-vous d'utiliser pour effectuer cela de
façon efficace.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
JScoobyCed
Arthur wrote:
Bonjour j'ai besoin de comparer deux Date, pour en extraire la difference en nombre de jour. Que me conseillez-vous d'utiliser pour effectuer cela de façon efficace.
Par avance merci.
Bonjour,
Je dirais que d'utiliser un objet Calendar: <pseudo-code>
public int getDayDiff(Date date1, Date date2) { long diff = date1.getTime()-date2.getTime(); if(diff<0) { diff = 0 - diff; } Calendar cal = Calendar.getInstance(); cal.setTime(diff); return cal.get(Calendar.DAY_OF_YEAR); }
</pseudo-code>
--- JSC
Arthur wrote:
Bonjour
j'ai besoin de comparer deux Date, pour en extraire la difference en
nombre de jour. Que me conseillez-vous d'utiliser pour effectuer cela de
façon efficace.
Par avance merci.
Bonjour,
Je dirais que d'utiliser un objet Calendar:
<pseudo-code>
public int getDayDiff(Date date1, Date date2) {
long diff = date1.getTime()-date2.getTime();
if(diff<0) {
diff = 0 - diff;
}
Calendar cal = Calendar.getInstance();
cal.setTime(diff);
return cal.get(Calendar.DAY_OF_YEAR);
}
Bonjour j'ai besoin de comparer deux Date, pour en extraire la difference en nombre de jour. Que me conseillez-vous d'utiliser pour effectuer cela de façon efficace.
Par avance merci.
Bonjour,
Je dirais que d'utiliser un objet Calendar: <pseudo-code>
public int getDayDiff(Date date1, Date date2) { long diff = date1.getTime()-date2.getTime(); if(diff<0) { diff = 0 - diff; } Calendar cal = Calendar.getInstance(); cal.setTime(diff); return cal.get(Calendar.DAY_OF_YEAR); }
</pseudo-code>
--- JSC
Isammoc
public int getDayDiff(Date date1, Date date2) { long diff = date1.getTime()-date2.getTime(); if(diff<0) { diff = 0 - diff; } Calendar cal = Calendar.getInstance(); cal.setTime(diff); return cal.get(Calendar.DAY_OF_YEAR); } </pseudo-code>
Et s'il y a + de 365 jours... Ca marche pas...
--- <---- Signature non standard JSC
-- Isammoc
public int getDayDiff(Date date1, Date date2) {
long diff = date1.getTime()-date2.getTime();
if(diff<0) {
diff = 0 - diff;
}
Calendar cal = Calendar.getInstance();
cal.setTime(diff);
return cal.get(Calendar.DAY_OF_YEAR);
}
</pseudo-code>
On 14 Dec 2004 09:06:57 GMT Isammoc <Isammoc.jeux(no-spam)@free.fr> wrote:
public int getDayDiff(Date date1, Date date2) { long diff = date1.getTime()-date2.getTime(); if(diff<0) { diff = 0 - diff; } Calendar cal = Calendar.getInstance(); cal.setTime(diff); return cal.get(Calendar.DAY_OF_YEAR); } </pseudo-code>
Et s'il y a + de 365 jours... Ca marche pas...
--- <---- Signature non standard JSC
-- Isammoc
Ben une solution serait de créer une absolue à partir d'une date entr ée, en nombre de jours par exemple à partir du premier jour de l'an 0.
Fred
Bruno Jouhier
Le plus efficace, c'est probablement de faire
long millis = Math.abs(d1.getTime() - d2.getTime()); int days = (int)Math.round((double)millis / 86400000);
Le round permet de gérer le cas où on est passé de l'heure d'hiver à l'heure d'été entre les 2 dates.
Bruno.
"Arthur" a écrit dans le message de news: 41be9f1a$0$10204$
Bonjour j'ai besoin de comparer deux Date, pour en extraire la difference en nombre de jour. Que me conseillez-vous d'utiliser pour effectuer cela de façon efficace.
Par avance merci.
Le plus efficace, c'est probablement de faire
long millis = Math.abs(d1.getTime() - d2.getTime());
int days = (int)Math.round((double)millis / 86400000);
Le round permet de gérer le cas où on est passé de l'heure d'hiver à l'heure
d'été entre les 2 dates.
Bruno.
"Arthur" <mpaquot@wanadoo.fr> a écrit dans le message de news:
41be9f1a$0$10204$8fcfb975@news.wanadoo.fr...
Bonjour
j'ai besoin de comparer deux Date, pour en extraire la difference en
nombre de jour. Que me conseillez-vous d'utiliser pour effectuer cela de
façon efficace.
long millis = Math.abs(d1.getTime() - d2.getTime()); int days = (int)Math.round((double)millis / 86400000);
Le round permet de gérer le cas où on est passé de l'heure d'hiver à l'heure d'été entre les 2 dates.
Bruno.
"Arthur" a écrit dans le message de news: 41be9f1a$0$10204$
Bonjour j'ai besoin de comparer deux Date, pour en extraire la difference en nombre de jour. Que me conseillez-vous d'utiliser pour effectuer cela de façon efficace.
Par avance merci.
Arthur
Le plus efficace, c'est probablement de faire
long millis = Math.abs(d1.getTime() - d2.getTime()); int days = (int)Math.round((double)millis / 86400000);
Le round permet de gérer le cas où on est passé de l'heure d'hiver à l'heure d'été entre les 2 dates.
Bruno.
"Arthur" a écrit dans le message de news: 41be9f1a$0$10204$
Bonjour j'ai besoin de comparer deux Date, pour en extraire la difference en nombre de jour. Que me conseillez-vous d'utiliser pour effectuer cela de façon efficace.
Par avance merci.
Je vais regarder cela de près.
Merci pour l'ensemble de vos réponse !
a+
Le plus efficace, c'est probablement de faire
long millis = Math.abs(d1.getTime() - d2.getTime());
int days = (int)Math.round((double)millis / 86400000);
Le round permet de gérer le cas où on est passé de l'heure d'hiver à l'heure
d'été entre les 2 dates.
Bruno.
"Arthur" <mpaquot@wanadoo.fr> a écrit dans le message de news:
41be9f1a$0$10204$8fcfb975@news.wanadoo.fr...
Bonjour
j'ai besoin de comparer deux Date, pour en extraire la difference en
nombre de jour. Que me conseillez-vous d'utiliser pour effectuer cela de
façon efficace.
long millis = Math.abs(d1.getTime() - d2.getTime()); int days = (int)Math.round((double)millis / 86400000);
Le round permet de gérer le cas où on est passé de l'heure d'hiver à l'heure d'été entre les 2 dates.
Bruno.
"Arthur" a écrit dans le message de news: 41be9f1a$0$10204$
Bonjour j'ai besoin de comparer deux Date, pour en extraire la difference en nombre de jour. Que me conseillez-vous d'utiliser pour effectuer cela de façon efficace.
Par avance merci.
Je vais regarder cela de près.
Merci pour l'ensemble de vos réponse !
a+
JScoobyCed
Isammoc wrote:
</pseudo-code>
Et s'il y a + de 365 jours... Ca marche pas...
Ok, mais j'ai mis <pseudo-code>, qui donne l'idee principale.
"JScoobyCed" a écrit dans le message de news: 41bf9a54$0$23442$
Isammoc wrote:
</pseudo-code>
Et s'il y a + de 365 jours... Ca marche pas...
Ok, mais j'ai mis <pseudo-code>, qui donne l'idee principale.
Il n'en reste pas moins que l'utilisation de Calendar n'apporte que des complications dans le problème qui était posé. Outre le fait que ça ne marche pas s'il y a + de 365 jours, ça ne marche pas non plus si on passe du 31 décembre au 1er janvier (il n'y a pourtant qu'un jour), et ce n'est pas si facile que ça à corriger car il faut savoir si l'année est bissextile ou pas (le DAY_OF_YEAR du 31 décembre en dépend), etc.
Bref, pour calculer la différence en jours, il suffit de calculer la différence en millisecondes et de diviser par le nombre de millisecondes par jour, en n'oubliant pas d'arrondir (au lieu de tronquer) pour ne pas avoir de mauvaises surprises si une heure a disparu entre les 2 à cause du passage à l'heure d'été. Pas besoin de Calendar pour ça.
"JScoobyCed" <pim@pam.poum> a écrit dans le message de news:
41bf9a54$0$23442$626a14ce@news.free.fr...
Isammoc wrote:
</pseudo-code>
Et s'il y a + de 365 jours... Ca marche pas...
Ok, mais j'ai mis <pseudo-code>, qui donne l'idee principale.
Il n'en reste pas moins que l'utilisation de Calendar n'apporte que des
complications dans le problème qui était posé. Outre le fait que ça ne
marche pas s'il y a + de 365 jours, ça ne marche pas non plus si on passe du
31 décembre au 1er janvier (il n'y a pourtant qu'un jour), et ce n'est pas
si facile que ça à corriger car il faut savoir si l'année est bissextile ou
pas (le DAY_OF_YEAR du 31 décembre en dépend), etc.
Bref, pour calculer la différence en jours, il suffit de calculer la
différence en millisecondes et de diviser par le nombre de millisecondes par
jour, en n'oubliant pas d'arrondir (au lieu de tronquer) pour ne pas avoir
de mauvaises surprises si une heure a disparu entre les 2 à cause du passage
à l'heure d'été. Pas besoin de Calendar pour ça.
"JScoobyCed" a écrit dans le message de news: 41bf9a54$0$23442$
Isammoc wrote:
</pseudo-code>
Et s'il y a + de 365 jours... Ca marche pas...
Ok, mais j'ai mis <pseudo-code>, qui donne l'idee principale.
Il n'en reste pas moins que l'utilisation de Calendar n'apporte que des complications dans le problème qui était posé. Outre le fait que ça ne marche pas s'il y a + de 365 jours, ça ne marche pas non plus si on passe du 31 décembre au 1er janvier (il n'y a pourtant qu'un jour), et ce n'est pas si facile que ça à corriger car il faut savoir si l'année est bissextile ou pas (le DAY_OF_YEAR du 31 décembre en dépend), etc.
Bref, pour calculer la différence en jours, il suffit de calculer la différence en millisecondes et de diviser par le nombre de millisecondes par jour, en n'oubliant pas d'arrondir (au lieu de tronquer) pour ne pas avoir de mauvaises surprises si une heure a disparu entre les 2 à cause du passage à l'heure d'été. Pas besoin de Calendar pour ça.
"Bruno Jouhier" a écrit dans le message de news: 41bfea74$0$20831$
"JScoobyCed" a écrit dans le message de news: 41bf9a54$0$23442$
Isammoc wrote:
</pseudo-code>
Et s'il y a + de 365 jours... Ca marche pas...
Ok, mais j'ai mis <pseudo-code>, qui donne l'idee principale.
Il n'en reste pas moins que l'utilisation de Calendar n'apporte que des complications dans le problème qui était posé. Outre le fait que ça ne marche pas s'il y a + de 365 jours, ça ne marche pas non plus si on passe du 31 décembre au 1er janvier (il n'y a pourtant qu'un jour), et ce n'est pas si facile que ça à corriger car il faut savoir si l'année est bissextile ou pas (le DAY_OF_YEAR du 31 décembre en dépend), etc.
Ooups. J'étais passé un peu vite sur le pseudo-code. Ce que je viens d'écrire est faux, il n'y a pas de pb particulier quand on passe du 31 dec au 1er janvier, mais c'est quand même une utilisation incorrecte de Calendar (faire un setTime avec une différence entre 2 dates, ça n'a pas de sens) et ça donne une réponse erronée (décalée de 1 jour car DAY_OF_YEAR varie de 1 à 366 et l'origine des dates est un 1er janvier). Même si on corrige ce décalage de 1, on a quand même des surprises. Par exemple, le résultat dépend de la TimeZone: avec la TimeZone "CET", on obtient 2 jours entre le 5 et le 7 décembre, mais en timezone "EST", on obtient 1 jour!! (quizz: pourquoi?).
Bruno.
Bref, pour calculer la différence en jours, il suffit de calculer la différence en millisecondes et de diviser par le nombre de millisecondes par jour, en n'oubliant pas d'arrondir (au lieu de tronquer) pour ne pas avoir de mauvaises surprises si une heure a disparu entre les 2 à cause du passage à l'heure d'été. Pas besoin de Calendar pour ça.
"Bruno Jouhier" <bjouhier@club-internet.fr> a écrit dans le message de news:
41bfea74$0$20831$7a628cd7@news.club-internet.fr...
"JScoobyCed" <pim@pam.poum> a écrit dans le message de news:
41bf9a54$0$23442$626a14ce@news.free.fr...
Isammoc wrote:
</pseudo-code>
Et s'il y a + de 365 jours... Ca marche pas...
Ok, mais j'ai mis <pseudo-code>, qui donne l'idee principale.
Il n'en reste pas moins que l'utilisation de Calendar n'apporte que des
complications dans le problème qui était posé. Outre le fait que ça ne
marche pas s'il y a + de 365 jours, ça ne marche pas non plus si on passe
du 31 décembre au 1er janvier (il n'y a pourtant qu'un jour), et ce n'est
pas si facile que ça à corriger car il faut savoir si l'année est
bissextile ou pas (le DAY_OF_YEAR du 31 décembre en dépend), etc.
Ooups. J'étais passé un peu vite sur le pseudo-code. Ce que je viens
d'écrire est faux, il n'y a pas de pb particulier quand on passe du 31 dec
au 1er janvier, mais c'est quand même une utilisation incorrecte de Calendar
(faire un setTime avec une différence entre 2 dates, ça n'a pas de sens) et
ça donne une réponse erronée (décalée de 1 jour car DAY_OF_YEAR varie de 1 à
366 et l'origine des dates est un 1er janvier). Même si on corrige ce
décalage de 1, on a quand même des surprises. Par exemple, le résultat
dépend de la TimeZone: avec la TimeZone "CET", on obtient 2 jours entre le 5
et le 7 décembre, mais en timezone "EST", on obtient 1 jour!! (quizz:
pourquoi?).
Bruno.
Bref, pour calculer la différence en jours, il suffit de calculer la
différence en millisecondes et de diviser par le nombre de millisecondes
par jour, en n'oubliant pas d'arrondir (au lieu de tronquer) pour ne pas
avoir de mauvaises surprises si une heure a disparu entre les 2 à cause du
passage à l'heure d'été. Pas besoin de Calendar pour ça.
"Bruno Jouhier" a écrit dans le message de news: 41bfea74$0$20831$
"JScoobyCed" a écrit dans le message de news: 41bf9a54$0$23442$
Isammoc wrote:
</pseudo-code>
Et s'il y a + de 365 jours... Ca marche pas...
Ok, mais j'ai mis <pseudo-code>, qui donne l'idee principale.
Il n'en reste pas moins que l'utilisation de Calendar n'apporte que des complications dans le problème qui était posé. Outre le fait que ça ne marche pas s'il y a + de 365 jours, ça ne marche pas non plus si on passe du 31 décembre au 1er janvier (il n'y a pourtant qu'un jour), et ce n'est pas si facile que ça à corriger car il faut savoir si l'année est bissextile ou pas (le DAY_OF_YEAR du 31 décembre en dépend), etc.
Ooups. J'étais passé un peu vite sur le pseudo-code. Ce que je viens d'écrire est faux, il n'y a pas de pb particulier quand on passe du 31 dec au 1er janvier, mais c'est quand même une utilisation incorrecte de Calendar (faire un setTime avec une différence entre 2 dates, ça n'a pas de sens) et ça donne une réponse erronée (décalée de 1 jour car DAY_OF_YEAR varie de 1 à 366 et l'origine des dates est un 1er janvier). Même si on corrige ce décalage de 1, on a quand même des surprises. Par exemple, le résultat dépend de la TimeZone: avec la TimeZone "CET", on obtient 2 jours entre le 5 et le 7 décembre, mais en timezone "EST", on obtient 1 jour!! (quizz: pourquoi?).
Bruno.
Bref, pour calculer la différence en jours, il suffit de calculer la différence en millisecondes et de diviser par le nombre de millisecondes par jour, en n'oubliant pas d'arrondir (au lieu de tronquer) pour ne pas avoir de mauvaises surprises si une heure a disparu entre les 2 à cause du passage à l'heure d'été. Pas besoin de Calendar pour ça.
"Bruno Jouhier" a écrit dans le message de news: 41bfea74$0$20831$
Bref, pour calculer la différence en jours, il suffit de calculer la différence en millisecondes et de diviser par le nombre de millisecondes par jour, en n'oubliant pas d'arrondir (au lieu de tronquer) pour ne pas avoir de mauvaises surprises si une heure a disparu entre les 2 à cause du passage à l'heure d'été. Pas besoin de Calendar pour ça.
Bruno.
Ok, mon choix de Calendar etait pas tres judicieux pour ce cas.
-- JSC
Bruno Jouhier wrote:
"Bruno Jouhier" <bjouhier@club-internet.fr> a écrit dans le message de news:
41bfea74$0$20831$7a628cd7@news.club-internet.fr...
Bref, pour calculer la différence en jours, il suffit de calculer la
différence en millisecondes et de diviser par le nombre de millisecondes
par jour, en n'oubliant pas d'arrondir (au lieu de tronquer) pour ne pas
avoir de mauvaises surprises si une heure a disparu entre les 2 à cause du
passage à l'heure d'été. Pas besoin de Calendar pour ça.
Bruno.
Ok, mon choix de Calendar etait pas tres judicieux pour ce cas.
"Bruno Jouhier" a écrit dans le message de news: 41bfea74$0$20831$
Bref, pour calculer la différence en jours, il suffit de calculer la différence en millisecondes et de diviser par le nombre de millisecondes par jour, en n'oubliant pas d'arrondir (au lieu de tronquer) pour ne pas avoir de mauvaises surprises si une heure a disparu entre les 2 à cause du passage à l'heure d'été. Pas besoin de Calendar pour ça.
Bruno.
Ok, mon choix de Calendar etait pas tres judicieux pour ce cas.