Java.util.Date Calculate difference in days

I tried to calculate the difference between the two dates, and I noticed one thing. When calculating only days, daylight saving time starts, so the result will be shorter with 1 day.

To get accurate results, you must also consider the value of the clock.

For instance:

SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy"); Date dfrom = format.parse("03-29-2015"); Date dto = format.parse("03-30-2015"); long diff = dto.getTime() - dfrom.getTime(); System.out.println(diff); System.out.println("Days: "+diff / (24 * 60 * 60 * 1000)); System.out.println("Hours: "+diff / (60 * 60 * 1000) % 24); 

Output:

 82800000 Days: 0 Hours: 23 

Does anyone have a better solution?

+5
source share
1 answer

Oh yes, there is a better solution!

Stop using the deprecated java.util.Date class and embrace the power of the java.time API built into Java 8 and later ( tutorial ). In particular, DateTimeFormatter , LocalDate and ChronoUnit .

 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy"); LocalDate date1 = LocalDate.parse("03-29-2015", formatter); LocalDate date2 = LocalDate.parse("03-30-2015", formatter); long days = ChronoUnit.DAYS.between(date1, date2); System.out.println(days); // prints 1 
+9
source

Source: https://habr.com/ru/post/1232783/


All Articles