Comment calculer le temps écoulé à partir de maintenant avec Joda-Time?
J'ai besoin de calculer la temps écoulé depuis une date donnée jusqu'à maintenant et de l'afficher avec le même format que StackOverflow questions, à savoir:
15s ago
2min ago
2hours ago
2days ago
25th Dec 08
Savez-vous comment y parvenir avec le Java Joda-Time bibliothèque? Est-il une méthode d'assistance qui implémente déjà, ou devrais-je écrire l'algorithme de moi-même?
- "25 Déc 08" n'est pas un "temps écoulé depuis une date donnée jusqu'à maintenant" (qui vous a écrit en gras 😉
- Je sais. Mais c'est l'affichage de question de temps comme ça. Si le délai est assez long, puis il affiche la date exacte.
- Je suis assez mécontent de la StackOverflow genre de manipulation de dates. Vous obtenez beaucoup de chiffres précis au premier abord (il y a 37 secondes), mais ils deviennent vite très vague (2 jours il ya). Seulement après que l'heure est affichée au format absolu, vous obtenez de voir le précis (au moins à quelques minutes) la date et l'heure à nouveau. Je crois que ce genre de données n'est utile qu'en plus de l'absolu, mais ne la remplace pas.
- Vous pouvez obtenir le exacte datetime dans l'info-bulle. Il suffit de passer le datetime un peu tout 🙂
- Joda-Time n'est pas bien conçu pour l'impression de relative (elapsed) de temps lorsque vous avez besoin de fonctionnalités supplémentaires. L'on a accepté la réponse est ok, mais pas localisables (uniquement pour l'anglais). Si vous avez besoin de support de la localisation puis il y a de mieux de la 3e partie des bibliothèques. ocpsoft/PrettyTime est une meilleure option, mais fonctionne avec les anciens de la classe
java.util.Date
seulement. Cependant, ma lib Time4J est à mon humble avis le meilleur de lib pour l'impression une fois (il y a-format) ou à la fois en format "3 mois, 4 jours". Il est également accessible aux fait 72 langues.
Vous devez vous connecter pour publier un commentaire.
Pour calculer le temps écoulé avec JodaTime, utilisez
Délai
. Pour formater le temps écoulé dans la représentation humaine, l'utilisationPeriodFormatter
lequel vous pouvez construire parPeriodFormatterBuilder
.Voici un coup d'envoi exemple:
Cela s'imprime maintenant
(Toux, de vieux, de la toux) Vous voyez que j'ai mis des mois et des années en compte et les a configurés pour omettre les valeurs lorsque ceux-ci sont à zéro.
Utilisation PrettyTime pour de Simples Temps Écoulé.
J'ai essayé HumanTime comme @sfussenegger répondu et à l'aide de JodaTime de
Period
mais la méthode la plus simple et la plus propre méthode pour lisible temps que j'ai trouvé était le PrettyTime bibliothèque.Voici quelques exemples simples avec entrée et sortie:
Il Ya Cinq Minutes
Y A Quelques Temps
ATTENTION: j'ai essayé de jouer avec la bibliothèque la plus précise de la fonctionnalité, mais cela donne de drôles de résultats afin de les utiliser avec prudence et en non-vie en danger projets.
JP
Vous pouvez le faire avec un PeriodFormatter mais vous n'avez pas à aller à l'effort de faire votre propre PeriodFormatBuilder comme dans d'autres réponses. Si elle convient à votre cas, vous pouvez simplement utiliser le formateur par défaut:
(hat tip pour cette réponse sur une question similaire, je suis le cross-posting pour la détectabilité)
Il y a une petite classe d'aide appelé HumanTime que je suis assez heureux avec.