Using instances of GregorianCalendar to determine time passed?

Cole Mertz :

I am working on a project in my CIS 163 class that is effectively a campsite reservation system. The bulk of the code was provided and I just have to add certain functionalities to it. Currently I need to be able to determine how much time has passed between 2 different GregorianCalendar instances (one being the current date, the other being a predetermined "check out") represented by days. I haven't been able to figure out quite how to do this, and was hoping someone here might be able to help me out.

fwerther :

The GregorianCalendar is old and you shouldn't really use it anymore. It was cumbersome and was replaced by the "new" java.time module since Java 8.

Still, if you need to compare using GC instances, you could easily calculate time using milliseconds between dates, like this:

GregorianCalendar date1 = new GregorianCalendar();
GregorianCalendar date2 = new GregorianCalendar();

// Adding 15 days after the first date
date2.add(GregorianCalendar.DAY_OF_MONTH, 15);
long duration = (date2.getTimeInMillis() - date1.getTimeInMillis() )
                         / ( 1000 * 60 * 60 * 24) ;
System.out.println(duration);

If you want to use the new Time API, the following code would work.

LocalDate date1 = LocalDate.now();
LocalDate date2 = date1.plusDays(15);

Period period = Period.between(date1, date2);
int diff = period.getDays();
System.out.println(diff);

If you need to convert between the types (e.g. you're working with legacy code), you can do it like this:

LocalDate date3 = gcDate1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate date4 = gcDate2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

Also I'm pretty sure this question must've been asked over and over again, so make sure you search properly before asking.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=350116&siteId=1