DateFormatUtils.format does not correctly change Calendar TimeZone in certain 
situations
----------------------------------------------------------------------------------------

                 Key: LANG-538
                 URL: https://issues.apache.org/jira/browse/LANG-538
             Project: Commons Lang
          Issue Type: Bug
    Affects Versions: 2.4
         Environment: Sun JDK6, RHEL 5.3
            Reporter: Jeff Peterson
             Fix For: 2.x


If a Calendar object is constructed in certain ways a call to 
Calendar.setTimeZone does not correctly change the Calendars fields.  Calling 
Calenar.getTime() seems to fix this problem.  While this is probably a bug in 
the JDK, it would be nice if DateFormatUtils was smart enough to detect/resolve 
this problem.

For example, the following unit test fails:

{noformat}
  public void testFormat_CalendarIsoMsZulu() {
    final String dateTime = "2009-10-16T16:42:16.000Z";

    // more commonly constructed with: cal = new GregorianCalendar(2009, 9, 16, 
8, 42, 16)
    // for the unit test to work in any time zone, constructing with GMT-8 
rather than default locale time zone
    GregorianCalendar cal = new 
GregorianCalendar(TimeZone.getTimeZone("GMT-8"));
    cal.clear();
    cal.set(2009, 9, 16, 8, 42, 16);


    FastDateFormat format = 
FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", 
TimeZone.getTimeZone("GMT"));
    assertEquals("dateTime", dateTime, format.format(cal));
  }
{noformat}

However, this unit test passes:

{noformat}
  public void testFormat_CalendarIsoMsZulu() {
    final String dateTime = "2009-10-16T16:42:16.000Z";
    GregorianCalendar cal = new 
GregorianCalendar(TimeZone.getTimeZone("GMT-8"));
    cal.clear();
    cal.set(2009, 9, 16, 8, 42, 16);
    cal.getTime();

    FastDateFormat format = 
FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", 
TimeZone.getTimeZone("GMT"));
    assertEquals("dateTime", dateTime, format.format(cal));
  }
{noformat}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to