Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java date difference puzzle

Tags:

java

time

I am trying to calculate a date time difference but I'm getting some strange results: Here is the source:

   import java.util.Calendar;
    import java.util.Collections;
    import java.util.Vector;

    public class Main {

        static Calendar dcal = Calendar.getInstance();
    static Calendar ccal = Calendar.getInstance();
    public static void main(String[] args) {
        dcal.set(2011, 1, 27);
        ccal.set(2011,2,1);
        long dtime = dcal.getTimeInMillis();
        long ctime = ccal.getTimeInMillis();
        long diff = ctime - dtime;
        int hours = (int) (diff / (1000 * 60 * 60));
        System.out.println("hours->"+hours);

    }

}

When I set ccal to 1 31 2011 the date difference is 96 hours but when I set it to 2 1 2011 the date difference is 48 hours. How can this be? What is the remedy?

Thanks,

Elliott

like image 557
Elliott Avatar asked Feb 02 '11 18:02

Elliott


People also ask

How to get date Difference between two dates in Java?

getTime() – d1. getTime(). Use date-time mathematical formula to find the difference between two dates. It returns the years, days, hours, minutes, and seconds between the two specifies dates.


1 Answers

If you're setting ccal like so "ccal.set(2011, 1, 31)" the date is actually March 3, 2001, since months are zero based and the calendar rolls by default. So the difference of 48hrs (96-48) is correct because there are two days between March 1 (set(2011,2,1)) and March 3 (set(2011,1,31)).

like image 67
maerics Avatar answered Sep 30 '22 12:09

maerics