In diesem Tutorial zeigen wir Ihnen zwei Beispiele zur Berechnung des Datums-/Zeitunterschieds in Java:
-
Manuelle Zeitberechnung
-
Joda-Zeitbibliothek.
1. Manuelle Zeitberechnung
Konvertiert
Date
in Millisekunden (ms) und berechnet die Differenzen zwischen zwei Datumsangaben mit den folgenden Regeln:
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(); } } }
Ergebnis
1 days, 1 hours, 1 minutes, 50 seconds.
Wenn Sie es in ändern
long diffSeconds = diff/1000;
Das Ergebnis wird sein
1 days, 1 hours, 1 minutes, 90110 seconds.
"90110" ist die Gesamtzahl der Sekunden, die zwischen "Datum1" und "Datum2" liegen. Dies ist richtig, wenn Sie NUR die Unterschiede in Sekunden erfahren möchten.
Um die Differenz im Format " Tag, Stunde, Minute und Sekunde " anzuzeigen, sollten Sie einen Modulus (% 60) verwenden, um die restlichen Sekunden ('90060') abzuschneiden. Ich habs? Die Idee wird auch in Minuten (% 60) und Stunden (% 24) angewendet.
90110 % 60 = 50 seconds (you want this) 90110 - 50 = 90060 seconds (you dont want this)
2. Joda Time Beispiel
Hier ist das äquivalente Beispiel, aber die Joda-Zeit wird verwendet, um Unterschiede zwischen zwei Datumsangaben zu berechnen.
P.S Dieses Beispiel verwendet 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(); } } }
Ergebnis
1 days, 1 hours, 1 minutes, 50 seconds.
Kommentieren Sie unten, wenn Sie alternative Wege haben :)