TimeUnit.DAYS.convert(
Math.abs(
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse("30-03-2020 00:00:00").getTime() -
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse("1-03-2020 00:00:00").getTime()
),
TimeUnit.MILLISECONDS)
Le résultat est 28, alors qu'il devrait être 29.
Le fuseau horaire / l'emplacement pourrait-il être le problème?
java.time[bien que je note que vous êtes sur Java 7], ThreeTenBp , Joda).
TimeUnitne prétend rien savoir de l'heure d'été. Comme le dit le javadoc: Une nanoseconde est définie comme un millième de microseconde, une microseconde comme un millième de milliseconde, une milliseconde comme un millième de seconde, une minute comme soixante secondes, une heure comme soixante minutes et un jour comme vingt-quatre heures . --- Étant donné que l'heure d'été fait que 2 jours de l'année ne sont pas exactement 24 heures, TimeUnitil se trompe lorsque l'heure d'été est impliquée.
SimpleDateFormatplus longtemps, car il est obsolète. Utilisezjava.timeplutôt des packages de . DansSimpleDateFormatle cas, utilisezDateTimeFormatter. Dans le cas de Java 7, voir le commentaire d'Andy Turner ci-dessous.