[Javalist] date diff
Freemail
laja at freemail.hu
2020. Már. 10., K, 11:00:04 UTC
Sziasztok!
Egy számomra elég fura dologba futottam bele.
A feladat alapvetően két dátum közti napok száma. Régi progi, úgyhogy
még Date van.
Az időszak legyen idén február elseje és április vége, és a kezdő és
záró napok is számítanak. Ami elvárunk, az a 90 (29 + 31 +30).
Date start = FORMAT_DATETIME.parse( "2020.02.01 00:00:00");
Date end = FORMAT_DATETIME.parse( "2020.05.01 00:00:00");
long diff = end.getTime() - start.getTime();
System.out.println( TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS) +
" nap" );
Az eredmény: 89 nap!!!
Először a TimeUnit-ra gyanakodtam, de nem az a ludas.
System.out.println( start.getTime() + " - " + end.getTime() + " = " +
diff + " = " + (diff/1000/60/60) + " óra");
Az eredmény: 2159 óra, pedig 2160-nak kellene lennie!
Aztán a szökőnapra gyanakodtam, ezért megnéztem hónaponként:
System.out.println( (FORMAT_DATETIME.parse( "2020.03.01
00:00:00").getTime()-FORMAT_DATETIME.parse( "2020.02.01
00:00:00").getTime())/1000/60/60 );
System.out.println( (FORMAT_DATETIME.parse( "2020.04.01
00:00:00").getTime()-FORMAT_DATETIME.parse( "2020.03.01
00:00:00").getTime())/1000/60/60 );
System.out.println( (FORMAT_DATETIME.parse( "2020.05.01
00:00:00").getTime()-FORMAT_DATETIME.parse( "2020.04.01
00:00:00").getTime())/1000/60/60 );
Az eredméynek: 696, 743, 721. A március a ludas, mert ott 744 órának
kellene lennie!
Át tudom hidalni a problémát:
System.out.println( Math.round(diff/1000/60/60/24.0) + " nap" );
De akkor se értem, miért lesz az adott példában a március 1 órával
rövidebb?
Valakinek van magyarázata vagy ötlete?
(Oracle féle java 1.8)
Laja
További információk a(z) Javalist levelezőlistáról