Je me demandais simplement s'il y avait un besoin de TimeSpan dans Java.util
pour que je puisse définir le nombre d'heures, de minutes et de secondes entre ces deux heures.
A partir de cette TimeSpan
nous pouvons avoir un intervalle de temps entre deux fois. comme
TimeSpan getTimeSpan( Date before, Date after ){...}
ou
long timeSpan = System.currentTimeMillis();
// ... long job
timeSpan = System.currentTimeMillis() - timeSpan;
TimeSpan ts = new TimeSpan(timeSpan);
et avec ce TimeSpan
nous pouvons l'utiliser dans SimpleDateFormat
.
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
format.format( timsSpan );
Je ne sais pas si cela a déjà été implémenté dans Java mais pas encore découvert par moi.
Avec JDK 8, les bibliothèques date-heure du SDK ont été enrichies et vous pouvez utiliser
Interval
de JodaTime fera l'affaire ..
Un intervalle de temps représente une période de temps entre deux instants. Les intervalles incluent le début et la fin. L'instant de fin est toujours supérieur ou égal à l'instant de début.
Les intervalles ont une durée fixe en millisecondes. C'est la différence entre les instants de début et de fin. La durée est représentée séparément par ReadableDuration. Par conséquent, les intervalles ne sont pas comparables. Pour comparer la longueur de deux intervalles, vous devez comparer leurs durées.
Un intervalle peut également être converti en ReadablePeriod. Cela représente la différence entre les points de début et de fin en termes de champs tels que les années et les jours.
L'intervalle est thread-safe et immuable.
Dans Java 8, une bibliothèque de temps appropriée a été ajoutée à l'API standard (elle est fortement basée sur JodaTime).
Il contient deux classes que vous pouvez utiliser pour indiquer une période:
Duration
qui indique une durée en secondes ou en nanosecondes d'un intervalle de temps.Period
qui indique une différence plus conviviale, stockée comme 'x années et y mois, etc.'.Une explication détaillée de la différence entre eux peut être trouvée dans le Tutoriel Java
Si vous êtes sur Java 8 (ou supérieur) ou si vous ne voulez tout simplement pas importer JodaTime (l'auteur de JodaTime lui-même suggérer de migrer vers Java.time) : Java 8 offre cette fonctionnalité avec Périodes , voir ici pour un tutoriel: https://docs.Oracle.com/javase/tutorial/datetime /iso/period.html
Permettez-moi de citer le tutoriel Oracle ici:
LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(1960, Month.JANUARY, 1);
Period p = Period.between(birthday, today);
long p2 = ChronoUnit.DAYS.between(birthday, today);
System.out.println("You are " + p.getYears() + " years, " + p.getMonths() +
" months, and " + p.getDays() +
" days old. (" + p2 + " days total)");
Le code produit une sortie similaire à la suivante:
You are 53 years, 4 months, and 29 days old. (19508 days total)
Si vous recherchez une version plus légère alternative, jetez un œil à cette bibliothèque que j'ai écrite pour utiliser dans ma propre application Android. https://github.com/ashokgelal/ samaya
Désolé, je n'ai aucune documentation sur son utilisation, mais elle est très similaire à la classe homologue .net Timespan. En outre, il existe des tests unitaires qui contiennent de nombreux exemples sur la façon de l'utiliser.