Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java , adding minutes to a Date , weird anomaly

Tags:

java

date

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) {}
like image 958
user27262 Avatar asked Nov 12 '08 23:11

user27262


3 Answers

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".

like image 61
Chris Jester-Young Avatar answered Oct 17 '22 06:10

Chris Jester-Young


Could this be daylight savings kicking in?

like image 37
toolkit Avatar answered Oct 17 '22 06:10

toolkit


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."

like image 39
DaWilli Avatar answered Oct 17 '22 08:10

DaWilli