88 votes

En Java, comment puis-je obtenir la différence en secondes entre 2 dates ?

La bibliothèque de classes Java a une classe nommée DateTime. DateTime a cette méthode :

int daysBetween(DateTime other)

qui renvoie le nombre de jours entre celui-ci et le paramètre. Il n'a pas de méthode

int secondsBetween(DateTime other)

dont j'ai besoin. Existe-t-il une classe similaire à DateTime mais disposant d'une telle méthode ?

195voto

Scott Stanchfield Points 15863

Pas familier avec DateTime...

Si vous avez deux dates, vous pouvez appeler getTime dessus pour obtenir des millisecondes, obtenir la différence et diviser par 1000. Par exemple

Date d1 = ...;
Date d2 = ...;
long seconds = (d2.getTime()-d1.getTime())/1000;

Si vous avez des objets Calendrier, vous pouvez appeler

c.getTimeInMillis()

et faites de même

10voto

Vous devriez faire

org.joda.time.Seconds.secondBetween(date1, date2)

7voto

Johannes Weiß Points 19013

Cela devrait le faire :

Date a = ...;
Date b = ...;

Math.abs(a.getTime()-b.getTime())/1000;

Voici la documentation pertinente : Date.getTime(). Sachez que cela ne fonctionnera que pour les dates postérieures au 1er janvier 1970, 00:00:00 GMT

5voto

andri Points 8237

Il n'y a pas de classe comme DateTime dans l'API Java SE standard. Bien qu'il y en ait une en joda-time, même cela n'a pas une méthode daysBetween.

En utilisant l'API Java standard, le moyen le plus simple d'obtenir des secondes entre deux objets java.util.Date serait de soustraire leurs horodatages et de diviser par 1000 :

int secondsBetween = (date1.getTime() - date2.getTime()) / 1000;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X