Java , adding minutes to a Date , weird anomaly


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.add(Calendar.MINUTE, minutesToAdd);

    } catch (ParseException e) {}

Best Solution

There's a crossover to daylight savings on that day.

Are you in New Zealand? If so, that means your timezone files are out of date. Better go to the Java download site and download new ones; look for "JDK DST Timezone Update Tool".