Christian P. MOMON created LANG-916:
---------------------------------------
Summary: CLONE - DateFormatUtils.format does not correctly change
Calendar TimeZone in certain situations
Key: LANG-916
URL: https://issues.apache.org/jira/browse/LANG-916
Project: Commons Lang
Issue Type: Bug
Components: lang.time.*
Affects Versions: 2.4
Environment: Sun JDK6, RHEL 5.3
Reporter: Christian P. MOMON
Fix For: 2.5
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.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira