Comment calculer la date et l’heure en Java

heure-date-différente-en-Java

Dans ce tutoriel, nous vous montrons 2 exemples pour calculer la différence date/heure en Java:

  1. Calcul manuel du temps.

  2. 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]