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
Libérer: 2024-12-02 20:04:13
original
560 Les gens l'ont consulté

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal