Dans ce tutoriel, nous vous montrons 2 exemples pour calculer la différence date/heure en Java:
-
Calcul manuel du temps.
-
Bibliothèque de temps Joda.
1. Calcul manuel du temps
Convertit
Date
en millisecondes (ms) et calcule les différences entre deux dates, avec les règles suivantes:
1000 milliseconds = 1 second 60 seconds = 1 minute 60 minutes = 1 hour 24 hours = 1 day
DateDifferentExample.java
package com.mkyong.date; import java.text.SimpleDateFormat; import java.util.Date; public class DateDifferentExample { public static void main(String[]args) { String dateStart = "01/14/2012 09:29:58"; String dateStop = "01/15/2012 10:31:48"; //HH converts hour in 24 hours format (0-23), day calculation SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); Date d1 = null; Date d2 = null; try { d1 = format.parse(dateStart); d2 = format.parse(dateStop); //in milliseconds long diff = d2.getTime() - d1.getTime(); long diffSeconds = diff/1000 % 60; long diffMinutes = diff/(60 ** 1000) % 60; long diffHours = diff/(60 ** 60 ** 1000) % 24; long diffDays = diff/(24 ** 60 ** 60 ** 1000); System.out.print(diffDays + " days, "); System.out.print(diffHours + " hours, "); System.out.print(diffMinutes + " minutes, "); System.out.print(diffSeconds + " seconds."); } catch (Exception e) { e.printStackTrace(); } } }
Résultat
1 days, 1 hours, 1 minutes, 50 seconds.
Si vous le changez en
long diffSeconds = diff/1000;
Le résultat sera
1 days, 1 hours, 1 minutes, 90110 seconds.
Le «` 90110` »est le nombre total de secondes de différence entre` date1` et
date2
, ceci est correct si vous voulez connaître les différences en secondes SEULEMENT.
Pour afficher les différences de format « jour, heure, minute et seconde », vous devez utiliser un module (% 60) pour couper le reste des secondes («90060»). Je l’ai? L’idée s’applique également en minutes (% 60) et en heures (% 24).
90110 % 60 = 50 seconds (you want this) 90110 - 50 = 90060 seconds (you dont want this)
2. Exemple de temps Joda
Voici l’exemple équivalent, mais en utilisant l’heure Joda pour calculer les différences entre deux dates.
P.S Cet exemple utilise joda-time-2.1.jar
JodaDateDifferentExample.java
package com.mkyong.date; import java.text.SimpleDateFormat; import java.util.Date; import org.joda.time.DateTime; import org.joda.time.Days; import org.joda.time.Hours; import org.joda.time.Minutes; import org.joda.time.Seconds; public class JodaDateDifferentExample { public static void main(String[]args) { String dateStart = "01/14/2012 09:29:58"; String dateStop = "01/15/2012 10:31:48"; SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); Date d1 = null; Date d2 = null; try { d1 = format.parse(dateStart); d2 = format.parse(dateStop); DateTime dt1 = new DateTime(d1); DateTime dt2 = new DateTime(d2); System.out.print(Days.daysBetween(dt1, dt2).getDays() + " days, "); System.out.print(Hours.hoursBetween(dt1, dt2).getHours() % 24 + " hours, "); System.out.print(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60 + " minutes, "); System.out.print(Seconds.secondsBetween(dt1, dt2).getSeconds() % 60 + " seconds."); } catch (Exception e) { e.printStackTrace(); } } }
Résultat
1 days, 1 hours, 1 minutes, 50 seconds.
Ne commentez ci-dessous si vous avez d’autres moyens :)
Références
lien://tag/date/[date]lien://tag/java/[java]lien://tag/joda-time/[joda-time]lien://tag/time/[heure]