Minuterie - Comment puis-je calculer la différence entre deux dates à l'aide de Joda Time?
Je veux obtenir la différence entre les deux temps de P (heure de début) et Q (heure de fin) à l'aide de Joda Time. P et Q peut être fois à des jours différents ou même le jour même. Je veux obtenir la différence dans le format HH-MM-SS, où H=heures, M=minutes, S=secondes.
Je veux utiliser cette fonctionnalité dans un timer. Je suppose que personne utilisera mon chronomètre pour mesurer plus de 24 heures.
Merci de me guider pour ce faire.
OriginalL'auteur david blaine | 2012-09-12
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à la Joda time FAQ
http://joda-time.sourceforge.net/faq.html#datediff
Et vous pouvez utiliser un
PeriodFormatter
pour obtenir le format de votre choix. Essayez l'exemple de code suivant.J'ai édité ma réponse à inclure des exemples de code. De l'essayer.
Merci ! La sortie est - 2-10-5. comment puis-je faire 02-10-05 ?
A eu l'idée ici - stackoverflow.com/questions/275711/...
Il ressemble à une modification de ma réponse originale à cette question qui a causé le problème. Sa devrait être corrigé maintenant.
OriginalL'auteur IceMan
J'admire le Joda date/heure API. Il offre quelques fonctionnalités cool et si j'ai besoin d'un calendrier immuable ou certains de l'ésotérisme, de calendrier les options qu'il offre, je serais tout sur elle.
C'est encore une API externe.
Alors ... pourquoi l'utiliser lorsque vous n'avez pas à. Dans le Joda API, le "Instantanée" est exactement la même chose qu'une API Java "Date" (ou à peu près). Ce sont à la fois minces wrappers autour d'un long qui représente un instant dans POSIX ÉPOQUE de l'heure UTC (qui est le nombre de millisecondes qui se sont écoulées depuis 00:00 le 1er janvier 1970 UTC.
Si vous avez deux Instants ou deux Dates, l'informatique, les jours entre eux est trivial, et le Joda bibliothèque n'est absolument pas nécessaire pour cette seule fin:
Cela suppose que le nombre de secondes dans une journée est de 86400 ... et c'est surtout vrai.
Une fois que vous avez une différence comme un double, il est trivial de convertir la partie fractionnaire de la réponse (qui est la fraction d'une journée) en HH:MM:SS.
La lisibilité est importante, mais je ne vois pas pourquoi le but de la méthode que j'ai fourni doit être obscure. Par exemple, on pourrait inclure
private final double MILLIS_IN_A_DAY = 86400.0 * 1000.0
pour faire le calcul dans la dernière ligne plus claire. Et, s'il est vrai que la Date est mutable, la routine est thread-safe ... et cette routine peut facilement être modifié pour utiliserlongs
directement. Le point ici est que, une solution simple à ce problème est accessible sans la nécessité pour Joda (il ne parle pas pour les implications plus larges de la Java Date/Heure API).OriginalL'auteur scottb