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) {}
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".
Could this be daylight savings kicking in?
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."
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With