DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25560>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25560

DateUtils.truncate() is off by one hour when using a date in DST switch 'zone'

           Summary: DateUtils.truncate() is off by one hour when using a
                    date in DST switch 'zone'
           Product: Commons
           Version: 2.0 Final
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Major
          Priority: Other
         Component: Lang
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


Try this using a Central European TimeZone:

import java.util.Calendar;
import org.apache.commons.lang.time.DateUtils;

Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, Calendar.MARCH);
cal.set(Calendar.YEAR, 2003);
cal.set(Calendar.DAY_OF_MONTH, 30);
cal.set(Calendar.HOUR_OF_DAY, 5);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
Date date_20030330 = cal.getTime();

Date expDate = DateUtils.truncate(date_20030330, Calendar.DATE);
System.out.println(expDate.toString());

-> Sat Mar 29 23:00:00 MET 2003 instead of Sun Mar 30 00:00:00 MET 2003

If the calendar instance represents a date AFTER the daylight savings time
switch and will be truncated to a time BEFORE the daylight savings time switch,
then the resulting date is wrong. (Daylight savings time was Sun Mar 30 02:00:00
resetting to 01:00.00.) Might also happen when rounding up dates over the
daylight savings time switch...

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to