J'ai besoin de trouver la différence entre les temps. Ceci est mon code Cependant, j'en ai besoin dans ce format 23 jours et 17 heures code> mais cela me donne un grand nombre comme 19804 code> l'heure.
Comment puis-je le convertir en ce format? P> p>
4 Réponses :
Essayez tohours () code> fait exactement ce qu'il dit: le nombre d'heures entre les deux dates. TOHOURSPART () CODE>, je pense que c'est ce que tu es À la recherche de: p>
Période d'utilisation:
LocalDateTime ltdNow = LocalDateTime.now();
LocalDateTime ltdThen = LocalDateTime.parse("2020-07-30T08:00:00");
Period p = Period.between(ltdThen , ltdNow );
long p2 = ChronoUnit.DAYS.between(ltdThen , ltdNow );
System.out.println("You are " + p.getYears() + " years, " + p.getMonths() +
" months, and " + p.getDays() +
" days old. (" + p2 + " days total)");
sortie: strong> p> Durée # TodayPart code> et Durée # TOHOURSPART code> a été introduit avec Java-9. P> H1>
ZoneId zone = ZoneId.of("Europe/Stockholm");
ZonedDateTime zdtNow = ZonedDateTime.now(zone);
ZonedDateTime zdtThen = LocalDateTime.parse("2020-10-26T08:00:00").atZone(zone);
long days = ChronoUnit.DAYS.between(zdtNow, zdtThen);
ZonedDateTime afterDays = zdtNow.plusDays(days);
long hours = ChronoUnit.HOURS.between(afterDays, zdtThen);
System.out.println("" + days + " days and " + hours + " hours");
Output when running today just before 18:00 Swedish time:
110 days and 14 hours
Messages:
Donât trust the Duration class to calculate days. It calculates a day as always 24 hours. Because of summer time (DST) and other anomalies a day is occasionally longer or shorter in real life. The calculation I am doing above crosses the transition from summer time to standard time in Sweden and correctly calculates 25th October as 25 hours, not 24.
Donât do your own division or multiplication to convert between days and hours. One, it doesnât give you a reliable result for the reason just stated. Two, if this was what you wanted, you should still leave the conversion to library classes, for example Duration.
Réponse précise;)
Je ne pense pas si cela fait une différence si nous utilisons localDatetime code> ou zoneddateTime code> dans ce cas car la chaîne de date donnée n'a pas d'informations sur la zone temporelle. En ce qui concerne le diff entre les temps de la date dans différents TZ, la zone temporelle importe, mais en ce qui concerne la différence entre deux fois de date dans la même zone de temps, cela n'a pas d'importance que TZ que nous utilisons. Est-ce que je manque quelque chose? Note: B> Je suis fier de dire que le crédit de la plupart des choses sur l'API de date moderne que j'ai appris, va à vous et Basil Bourque .
@Arvindkumaravinash Il faudra très rarement une différence aussi longtemps que vous êtes sûr que les temps de départ et de fin sont dans le même fuseau horaire. L'étui d'angle est lors du comptage heures i> jusqu'à une heure dans la nuit où les horloges changent. Dans ce cas, il y a 4 heures de 01h00 à 04h00 dans cette nuit-là, où localDaTetime code> ne comptera évidemment que 3. Quel résultat souhaité, vous devrez décider vous-même, bien sûr.
Merci, @ olev.v. pour l'expliquer.
Je vois que tu es en Suède. En Suède, l'heure d'été (DST) se termine dans la nuit entre le 24 octobre et 25, de 2020-10-24T12: 00: 00 à 2020-10-25T12: 00: 00 sera de 25 heures et non 24. Vous voulez alors
1 jours et 1 heure code> ou juste1 jour et 0 heures code>?Vous avez besoin de parenthèses pour TOHOURS () et aujourd'hui ().