Maison >Java >javaDidacticiel >Pourquoi mon calcul de différence de date Java est-il inexact et comment puis-je y remédier ?

Pourquoi mon calcul de différence de date Java est-il inexact et comment puis-je y remédier ?

DDD
DDDoriginal
2024-12-02 20:04:13524parcourir

Why is my Java date difference calculation inaccurate, and how can I fix it?

Détermination de la différence de temps entre les dates

Énoncé du problème :

Calcul de la différence en jours entre deux dates, vieillissementDate et aujourd'hui, l'utilisation de Java a donné des résultats inattendus. La différence calculée est supérieure au nombre réel de jours.

Analyse :

Le code fourni pour calculer la différence de jours entre deux dates semble être correct. Cependant, l'erreur peut provenir de problèmes potentiels ailleurs dans votre code.

Résolution :

1. Objets incorrects : Assurez-vous que AgingDate et Today sont des instances de la classe Date correcte. Confirmez qu'il n'y a pas de conversions de type ou d'erreurs de conversion.

2. Écarts de fuseau horaire : Vérifiez que les fuseaux horaires des deux dates sont cohérents. Si elles sont différentes, convertissez l'une des dates pour qu'elle corresponde à l'autre ou intégrez la gestion du fuseau horaire dans vos calculs.

3. Calculs et logique : Vérifiez à nouveau la logique dans calculateDifference() et assurez-vous qu'elle prend correctement en compte tous les scénarios possibles et les cas extrêmes.

Approche alternative :

Si les étapes de dépannage ci-dessus ne résolvent pas le problème, envisagez d'utiliser une bibliothèque externe telle que Joda Time, comme suggéré par la réponse fournie. Joda Time offre des capacités robustes de manipulation de la date et de l'heure et peut simplifier ce calcul. L'exemple de code suivant montre comment utiliser Joda Time :

import java.util.Date;
import org.joda.time.DateTime;
import org.joda.time.Days;

Date past = new Date(110, 5, 20); // June 20th, 2010
Date today = new Date(110, 6, 24); // July 24th
int days = Days.daysBetween(new DateTime(past), new DateTime(today)).getDays(); // => 34

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn