user3913154
user3913154

Reputation: 11

How to get/compute total number of months using JDateChooser

I'm new to Java

How do I get the total number of months between two (2) jdatechooser? I've search already about this but the date was set to the code, In my case I want to put the dates via JDateChooser.

I can do this through this code but if the year change I was not able to compute the total number of months I want to do this without using JodaTime.

Here is my code

    public void month(){
    int TotalMonth;
    Calendar toDate;
    Calendar fromDate; 
    int increment;

    Date dt1 = date1.getDate(); //datechooser 1
    Date dt2 = date2.getDate(); //datechooser 2



    fromDate = Calendar.getInstance();
    toDate = Calendar.getInstance();

    if(dt1.after(dt2))
    {
        fromDate.setTime(dt2);
        toDate.setTime(dt1);
    }
    else
    {
        fromDate.setTime(dt1);
        toDate.setTime(dt2);
    }
    increment = 0;

    TotalMonth = toDate.get(Calendar.MONTH) - (fromDate.get(Calendar.MONTH +  increment));

    jLabel2.setText(Integer.toString(age));

}

Upvotes: 0

Views: 804

Answers (1)

MadProgrammer
MadProgrammer

Reputation: 347314

JodaTime is simpler, however...

You need to loop from the start time to the end, incrementing the MONTH field on each loop while the date remains before the end time...

For example...

try {
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    Calendar cal1 = Calendar.getInstance();
    cal1.setTime(sdf.parse("08/03/1972"));
    Calendar cal2 = Calendar.getInstance();
    cal2.setTime(sdf.parse("08/03/2014"));

    // Yes, you can use cal1, but I you might want
    // to preserve it for other reasons...
    Calendar cal3 = Calendar.getInstance();
    cal3.setTime(cal1.getTime());
    int months = 0;
    while (cal3.before(cal2)) {
        cal3.add(Calendar.MONTH, 1);
        months++;
    }

    System.out.println("Months = " + months);

} catch (ParseException exp) {
    exp.printStackTrace();
}

Prints out Months = 505.

If you change cal2 to 08/04/1972, it will print Months = 1

Upvotes: 2

Related Questions