Comment calculer Différence Date à Java

Calculer les différences entre deux dates en Java 6.0 et plus tôt peut être trompeusement difficile en raison de la nécessité de tenir les années bissextiles, sauter secondes, l'heure d'été reprises et autres ajustements régulièrement apportées au calendrier dans la plupart des pays. Ce tutoriel fournit deux solutions, qui ne devrait pas être utilisé pour les situations où l'heure d'été ou les années bissextiles peuvent causer des problèmes graves et une option plus sophistiqué basé sur la bibliothèque JSR-310. Cette bibliothèque est prévue pour faire partie de l'API Java 7.0 quand il est libéré à la fin de 2010. Toutefois, il peut être téléchargé pour une utilisation maintenant.

Choses que vous devez

  • Ordinateur
  • Java
  • JSR-310 (en option)

Utilisation de Java 6.0 Outils

  1. Créer une nouvelle classe avec le nom "DateDifferencer" et le nom de fichier "DateDifferencer.java." Donnez-lui le squelette suivant:

    / **

    • Cette classe va fournir deux méthodes pour trouver les différences entre les dates:
      • Une méthode native qui ne tient pas compte des années bissextiles et autres bizarreries de date
      • mais qui est compatible avec la dernière version de Java, au début de 2010.
        • Une version plus sophistiquée qui utilise la bibliothèque JSR-310 externe,
        • qui sera inclus dans Java 7, qui doit être publié à la fin 2010.

          author Kevin Walker
          * /
          public class DateDifferencer {
        • }

          Tout le reste ira dans ce squelette de classe.

        • Calculer le nombre de millisecondes en un jour et le stocker dans une constante pour une utilisation ultérieure. Cela est nécessaire parce que Java 6.0 et versions antérieures comprennent nativement temps en millisecondes ou en nanosecondes.

          / **

          • Le nombre de millisecondes dans une journée est égale à 1000 millisecondes par seconde
          • 60 secondes par minute
          • 60 minutes par heure
          • 24 heures par jour
            * /



          • public final à double MILLISECONDS_IN_DAY statique = 10006060 * 24;

          • Créez le "findDifference" Procédé. Assurez-vous que le commentaire Javadoc note la faiblesse de la méthode pour quelqu'un d'autre qui choisit de l'utiliser.

            / **

            • Cette classe utilise une méthode simple pour calculer la différence entre deux dates.
            • Cependant, il est pas sans faille. Inexactitudes peuvent résulter des années bissextiles.
              *
            • return le nombre de jours de différence entre les deux dates, sans correction pour les années bissextiles ou modifications de l'heure d'épargne.
              * /
              Public Double findDifference statique (Date de d1, d2 date) {
            • à double diff = Math.abs (d2.getTime () - d1.getTime ())
              GO

              doubles jours = diff / MILLISECONDS_IN_DAY
              GO

              jours de retour
              GO

              }



              Cela fonctionne en faisant la différence entre les deux dates en termes de millisecondes. Il divise alors que par le nombre de millisecondes en un jour (qui vous calculée à l'étape 2).

            Utilisation de JSR-310

            1. Placez la JSR-310 Temps "bocal" déposer dans le même répertoire que le reste de votre programme.

            2. Ajouter un peu plus les importations à votre classe de DateDifferencer afin que vous puissiez avoir accès à la bibliothèque JSR 310.

              importation javax.time.Duration
              GO
              javax.time.period.Period importation;

            3. Ajouter une nouvelle méthode à votre classe de DateDifferencer.

              / **

              • return une chaîne décrivant la différence entre les deux dates.
                * /
                public static String findDifferenceWithJSR (date de début, date de fin) {
                Durée durée = Duration.durationBetween (début, fin)
                GO
                diff = Période Period.nanos (duration.toNanos ())
                GO
                retourner nouvelle diff.toString ()
                GO
                }
              • Cela crée un "Durée" objet, qui détient la différence entre les deux dates. Vous pourriez arrêter là et de retourner la durée de "toString" commande. Toutefois, cela donne la réponse en termes de secondes, ce qui est pas lisible. Ainsi, il crée alors un "Période" objet et utilise son "toString" commande.

              » » » » Comment calculer Différence Date à Java