Alex Rivera | Logout

Java , adding minutes to a Date , weird anomaly

Asked 2008-11-12T23:33:46.357
12

With Java Version 1.5.0_06 on both Windows and Ubuntu Linux :

Whenever I add minutes to the date "2008/10/05 00:00:00" , it seems that an extra hour is wrongly added.

ie: adding 360 minutes to 2008/10/05 00:00:00 at midnight should arrive at 2008/10/05 06:00:00

But it is arriving at 2008/10/05 07:00:00

The totally perplexing thing is that this ONLY happens when the day is 2008/10/05, all other days that I try perform the minutes addition correctly.

Am I going crazy or is this a bug in Java ?

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

    try {
        String date = "2008/10/05 00:00:00";
        int minutesToAdd = 360;  // 6 hrs

        Calendar cal = Calendar.getInstance();
        cal.setTime(sdf.parse(date));
        cal.add(Calendar.MINUTE, minutesToAdd);
        System.out.println(cal.getTime());

    } catch (ParseException e) {}
Edit
Report

1 Answer

1

Take a look at Joda-Time.

From the Documentation:

"Joda-Time has been created to radically change date and time handling in Java. The JDK classes Date and Calendar are very badly designed, have had numerous bugs and have odd performance effects."

answered 2008-11-13T08:15:43.167

Your Answer