0
votes

Différence entre deux date et fois

J'ai besoin de trouver la différence entre les temps. Ceci est mon code xxx

Cependant, j'en ai besoin dans ce format 23 jours et 17 heures mais cela me donne un grand nombre comme 19804 l'heure. Comment puis-je le convertir en ce format?


2 commentaires

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 ou juste 1 jour et 0 heures ?


Vous avez besoin de parenthèses pour TOHOURS () et aujourd'hui ().


4 Réponses :


3
votes

tohours () fait exactement ce qu'il dit: le nombre d'heures entre les deux dates.

Essayez TOHOURSPART () , je pense que c'est ce que tu es À la recherche de: xxx


0 commentaires

1
votes

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)");


0 commentaires

3
votes

localDaTetime # jusqu'à ce que xxx

sortie: xxx < p> Remarque: Durée # TodayPart et Durée # TOHOURSPART a été introduit avec Java-9.


0 commentaires

2
votes
    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.

4 commentaires

Réponse précise;)


Je ne pense pas si cela fait une différence si nous utilisons localDatetime ou zoneddateTime 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: 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 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 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.