You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ch...@apache.org on 2015/05/01 04:22:53 UTC
[lang] LANG-916: DateFormatUtils.format does not correctly change
Calendar TimeZone in certain situations LANG-1123: Unit test
FastDatePrinterTimeZonesTest needs a timezone set
Repository: commons-lang
Updated Branches:
refs/heads/master bea1ae92a -> 775203dd2
LANG-916: DateFormatUtils.format does not correctly change Calendar TimeZone in certain situations
LANG-1123: Unit test FastDatePrinterTimeZonesTest needs a timezone set
Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/775203dd
Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/775203dd
Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/775203dd
Branch: refs/heads/master
Commit: 775203dd2cfce017910d04c58a0b1b4e0a64923c
Parents: bea1ae9
Author: Chas Honton <ch...@apache.org>
Authored: Thu Apr 30 19:21:26 2015 -0700
Committer: Chas Honton <ch...@apache.org>
Committed: Thu Apr 30 19:21:26 2015 -0700
----------------------------------------------------------------------
src/changes/changes.xml | 2 +
.../commons/lang3/time/DateFormatUtils.java | 9 +
.../apache/commons/lang3/time/DatePrinter.java | 11 +-
.../commons/lang3/time/FastDatePrinter.java | 3 +-
.../commons/lang3/time/DateFormatUtilsTest.java | 197 +++++++++----------
.../lang3/time/DurationFormatUtilsTest.java | 2 +-
.../commons/lang3/time/FastDatePrinterTest.java | 30 ++-
.../time/FastDatePrinterTimeZonesTest.java | 2 +-
8 files changed, 143 insertions(+), 113 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-lang/blob/775203dd/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index d75b9c6..a7320df 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -22,6 +22,8 @@
<body>
<release version="3.5" date="tba" description="tba">
+ <action issue="LANG-1123" type="fix" dev="chas" due-to="Christian P. Momon">Unit test FastDatePrinterTimeZonesTest needs a timezone set</action>
+ <action issue="LANG-916" type="fix" dev="chas" due-to="Christian P. Momon">DateUtilsTest.testLang530 fails for some timezones</action>
<action issue="LANG-1116" type="fix" dev="chas" due-to="Aaron Sheldon">DateUtilsTest.testLang530 fails for some timezones</action>
<action issue="LANG-1114" type="fix" dev="britter" due-to="Andy Coates">TypeUtils.ParameterizedType#equals doesn't work with wildcard types</action>
<action issue="LANG-1119" type="add" dev="britter" due-to="Loic Guibert">Add rotate(string, int) method to StringUtils</action>
http://git-wip-us.apache.org/repos/asf/commons-lang/blob/775203dd/src/main/java/org/apache/commons/lang3/time/DateFormatUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/lang3/time/DateFormatUtils.java b/src/main/java/org/apache/commons/lang3/time/DateFormatUtils.java
index 4315e47..17cd6e6 100644
--- a/src/main/java/org/apache/commons/lang3/time/DateFormatUtils.java
+++ b/src/main/java/org/apache/commons/lang3/time/DateFormatUtils.java
@@ -43,6 +43,7 @@ public class DateFormatUtils {
/**
* ISO 8601 formatter for date-time without time zone.
* The format used is {@code yyyy-MM-dd'T'HH:mm:ss}.
+ * This format uses the default TimeZone in effect at the time of loading DateFormatUtils class.
*/
public static final FastDateFormat ISO_DATETIME_FORMAT
= FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss");
@@ -50,6 +51,7 @@ public class DateFormatUtils {
/**
* ISO 8601 formatter for date-time with time zone.
* The format used is {@code yyyy-MM-dd'T'HH:mm:ssZZ}.
+ * This format uses the default TimeZone in effect at the time of loading DateFormatUtils class.
*/
public static final FastDateFormat ISO_DATETIME_TIME_ZONE_FORMAT
= FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ssZZ");
@@ -57,6 +59,7 @@ public class DateFormatUtils {
/**
* ISO 8601 formatter for date without time zone.
* The format used is {@code yyyy-MM-dd}.
+ * This format uses the default TimeZone in effect at the time of loading DateFormatUtils class.
*/
public static final FastDateFormat ISO_DATE_FORMAT
= FastDateFormat.getInstance("yyyy-MM-dd");
@@ -66,6 +69,7 @@ public class DateFormatUtils {
* The format used is {@code yyyy-MM-ddZZ}.
* This pattern does not comply with the formal ISO 8601 specification
* as the standard does not allow a time zone without a time.
+ * This format uses the default TimeZone in effect at the time of loading DateFormatUtils class.
*/
public static final FastDateFormat ISO_DATE_TIME_ZONE_FORMAT
= FastDateFormat.getInstance("yyyy-MM-ddZZ");
@@ -73,6 +77,7 @@ public class DateFormatUtils {
/**
* ISO 8601 formatter for time without time zone.
* The format used is {@code 'T'HH:mm:ss}.
+ * This format uses the default TimeZone in effect at the time of loading DateFormatUtils class.
*/
public static final FastDateFormat ISO_TIME_FORMAT
= FastDateFormat.getInstance("'T'HH:mm:ss");
@@ -80,6 +85,7 @@ public class DateFormatUtils {
/**
* ISO 8601 formatter for time with time zone.
* The format used is {@code 'T'HH:mm:ssZZ}.
+ * This format uses the default TimeZone in effect at the time of loading DateFormatUtils class.
*/
public static final FastDateFormat ISO_TIME_TIME_ZONE_FORMAT
= FastDateFormat.getInstance("'T'HH:mm:ssZZ");
@@ -89,6 +95,7 @@ public class DateFormatUtils {
* The format used is {@code HH:mm:ss}.
* This pattern does not comply with the formal ISO 8601 specification
* as the standard requires the 'T' prefix for times.
+ * This format uses the default TimeZone in effect at the time of loading DateFormatUtils class.
*/
public static final FastDateFormat ISO_TIME_NO_T_FORMAT
= FastDateFormat.getInstance("HH:mm:ss");
@@ -98,6 +105,7 @@ public class DateFormatUtils {
* The format used is {@code HH:mm:ssZZ}.
* This pattern does not comply with the formal ISO 8601 specification
* as the standard requires the 'T' prefix for times.
+ * This format uses the default TimeZone in effect at the time of loading DateFormatUtils class.
*/
public static final FastDateFormat ISO_TIME_NO_T_TIME_ZONE_FORMAT
= FastDateFormat.getInstance("HH:mm:ssZZ");
@@ -105,6 +113,7 @@ public class DateFormatUtils {
/**
* SMTP (and probably other) date headers.
* The format used is {@code EEE, dd MMM yyyy HH:mm:ss Z} in US locale.
+ * This format uses the default TimeZone in effect at the time of loading DateFormatUtils class.
*/
public static final FastDateFormat SMTP_DATETIME_FORMAT
= FastDateFormat.getInstance("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
http://git-wip-us.apache.org/repos/asf/commons-lang/blob/775203dd/src/main/java/org/apache/commons/lang3/time/DatePrinter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/lang3/time/DatePrinter.java b/src/main/java/org/apache/commons/lang3/time/DatePrinter.java
index d1bfb91..6808628 100644
--- a/src/main/java/org/apache/commons/lang3/time/DatePrinter.java
+++ b/src/main/java/org/apache/commons/lang3/time/DatePrinter.java
@@ -49,8 +49,11 @@ public interface DatePrinter {
/**
* <p>Formats a {@code Calendar} object.</p>
+ * The TimeZone set on the Calendar is only used to adjust the time offset.
+ * The TimeZone specified during the construction of the Parser will determine the TimeZone
+ * used in the formatted string.
*
- * @param calendar the calendar to format
+ * @param calendar the calendar to format.
* @return the formatted string
*/
String format(Calendar calendar);
@@ -76,8 +79,10 @@ public interface DatePrinter {
StringBuffer format(Date date, StringBuffer buf);
/**
- * <p>Formats a {@code Calendar} object into the
- * supplied {@code StringBuffer}.</p>
+ * <p>Formats a {@code Calendar} object into the supplied {@code StringBuffer}.</p>
+ * The TimeZone set on the Calendar is only used to adjust the time offset.
+ * The TimeZone specified during the construction of the Parser will determine the TimeZone
+ * used in the formatted string.
*
* @param calendar the calendar to format
* @param buf the buffer to format into
http://git-wip-us.apache.org/repos/asf/commons-lang/blob/775203dd/src/main/java/org/apache/commons/lang3/time/FastDatePrinter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/lang3/time/FastDatePrinter.java b/src/main/java/org/apache/commons/lang3/time/FastDatePrinter.java
index ac73646..4a20333 100644
--- a/src/main/java/org/apache/commons/lang3/time/FastDatePrinter.java
+++ b/src/main/java/org/apache/commons/lang3/time/FastDatePrinter.java
@@ -477,7 +477,8 @@ public class FastDatePrinter implements DatePrinter, Serializable {
*/
@Override
public StringBuffer format(final Calendar calendar, final StringBuffer buf) {
- return applyRules(calendar, buf);
+ // do not pass in calendar directly, this will cause TimeZone of FastDatePrinter to be ignored
+ return format(calendar.getTime(), buf);
}
/**
http://git-wip-us.apache.org/repos/asf/commons-lang/blob/775203dd/src/test/java/org/apache/commons/lang3/time/DateFormatUtilsTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/lang3/time/DateFormatUtilsTest.java b/src/test/java/org/apache/commons/lang3/time/DateFormatUtilsTest.java
index 5a1d69f..425ec6c 100644
--- a/src/test/java/org/apache/commons/lang3/time/DateFormatUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/DateFormatUtilsTest.java
@@ -108,132 +108,75 @@ public class DateFormatUtilsTest {
assertEquals ("2005-01-01T12:00:00", DateFormatUtils.formatUTC(c.getTime().getTime(), DateFormatUtils.ISO_DATETIME_FORMAT.getPattern(), Locale.US));
}
+
+ private void assertFormats(String expectedValue, String pattern, TimeZone timeZone, Calendar cal) {
+ assertEquals(expectedValue, DateFormatUtils.format(cal.getTime(), pattern, timeZone));
+ assertEquals(expectedValue, DateFormatUtils.format(cal.getTime().getTime(), pattern, timeZone));
+ assertEquals(expectedValue, DateFormatUtils.format(cal, pattern, timeZone));
+ }
+
+ private Calendar createFebruaryTestDate(final TimeZone timeZone) {
+ final Calendar cal = Calendar.getInstance(timeZone);
+ cal.set(2002, Calendar.FEBRUARY, 23, 9, 11, 12);
+ return cal;
+ }
+
+ private Calendar createJuneTestDate(final TimeZone timeZone) {
+ final Calendar cal = Calendar.getInstance(timeZone);
+ cal.set(2003, Calendar.JUNE, 8, 10, 11, 12);
+ return cal;
+ }
+
+ private void testGmtMinus3(String expectedValue, String pattern) {
+ final TimeZone timeZone = TimeZone.getTimeZone("GMT-3");
+ assertFormats(expectedValue, pattern, timeZone, createFebruaryTestDate(timeZone));
+ }
+
+ private void testUTC(String expectedValue, String pattern) {
+ final TimeZone timeZone = TimeZone.getTimeZone("UTC");
+ assertFormats(expectedValue, pattern, timeZone, createFebruaryTestDate(timeZone));
+ }
@Test
public void testDateTimeISO() throws Exception {
- final TimeZone timeZone = TimeZone.getTimeZone("GMT-3");
- final Calendar cal = Calendar.getInstance(timeZone);
- cal.set(2002, Calendar.FEBRUARY, 23, 9, 11, 12);
- String text = DateFormatUtils.format(cal.getTime(),
- DateFormatUtils.ISO_DATETIME_FORMAT.getPattern(), timeZone);
- assertEquals("2002-02-23T09:11:12", text);
- text = DateFormatUtils.format(cal.getTime().getTime(),
- DateFormatUtils.ISO_DATETIME_FORMAT.getPattern(), timeZone);
- assertEquals("2002-02-23T09:11:12", text);
- text = DateFormatUtils.ISO_DATETIME_FORMAT.format(cal);
- assertEquals("2002-02-23T09:11:12", text);
-
- text = DateFormatUtils.format(cal.getTime(),
- DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern(), timeZone);
- assertEquals("2002-02-23T09:11:12-03:00", text);
- text = DateFormatUtils.format(cal.getTime().getTime(),
- DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern(), timeZone);
- assertEquals("2002-02-23T09:11:12-03:00", text);
- text = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(cal);
- assertEquals("2002-02-23T09:11:12-03:00", text);
-
- Calendar utcCal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
- utcCal.set(2002, Calendar.FEBRUARY, 23, 9, 11, 12);
- utcCal.set(Calendar.MILLISECOND, 0);
- text = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(utcCal);
- assertEquals("2002-02-23T09:11:12Z", text);
- Date date = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.parse(text);
- assertEquals(utcCal.getTime(), date);
+ testGmtMinus3("2002-02-23T09:11:12", DateFormatUtils.ISO_DATETIME_FORMAT.getPattern());
+ testGmtMinus3("2002-02-23T09:11:12-03:00", DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern());
+ testUTC("2002-02-23T09:11:12Z", DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern());
}
@Test
public void testDateISO(){
- final TimeZone timeZone = TimeZone.getTimeZone("GMT-3");
- final Calendar cal = Calendar.getInstance(timeZone);
- cal.set(2002, Calendar.FEBRUARY, 23, 10, 11, 12);
- String text = DateFormatUtils.format(cal.getTime(),
- DateFormatUtils.ISO_DATE_FORMAT.getPattern(), timeZone);
- assertEquals("2002-02-23", text);
- text = DateFormatUtils.format(cal.getTime().getTime(),
- DateFormatUtils.ISO_DATE_FORMAT.getPattern(), timeZone);
- assertEquals("2002-02-23", text);
- text = DateFormatUtils.ISO_DATE_FORMAT.format(cal);
- assertEquals("2002-02-23", text);
-
- text = DateFormatUtils.format(cal.getTime(),
- DateFormatUtils.ISO_DATE_TIME_ZONE_FORMAT.getPattern(), timeZone);
- assertEquals("2002-02-23-03:00", text);
- text = DateFormatUtils.format(cal.getTime().getTime(),
- DateFormatUtils.ISO_DATE_TIME_ZONE_FORMAT.getPattern(), timeZone);
- assertEquals("2002-02-23-03:00", text);
- text = DateFormatUtils.ISO_DATE_TIME_ZONE_FORMAT.format(cal);
- assertEquals("2002-02-23-03:00", text);
+ testGmtMinus3("2002-02-23", DateFormatUtils.ISO_DATE_FORMAT.getPattern());
+ testGmtMinus3("2002-02-23-03:00", DateFormatUtils.ISO_DATE_TIME_ZONE_FORMAT.getPattern());
+ testUTC("2002-02-23Z", DateFormatUtils.ISO_DATE_TIME_ZONE_FORMAT.getPattern());
}
@Test
public void testTimeISO(){
- final TimeZone timeZone = TimeZone.getTimeZone("GMT-3");
- final Calendar cal = Calendar.getInstance(timeZone);
- cal.set(2002, Calendar.FEBRUARY, 23, 10, 11, 12);
- String text = DateFormatUtils.format(cal.getTime(),
- DateFormatUtils.ISO_TIME_FORMAT.getPattern(), timeZone);
- assertEquals("T10:11:12", text);
- text = DateFormatUtils.format(cal.getTime().getTime(),
- DateFormatUtils.ISO_TIME_FORMAT.getPattern(), timeZone);
- assertEquals("T10:11:12", text);
- text = DateFormatUtils.ISO_TIME_FORMAT.format(cal);
- assertEquals("T10:11:12", text);
-
- text = DateFormatUtils.format(cal.getTime(),
- DateFormatUtils.ISO_TIME_TIME_ZONE_FORMAT.getPattern(), timeZone);
- assertEquals("T10:11:12-03:00", text);
- text = DateFormatUtils.format(cal.getTime().getTime(),
- DateFormatUtils.ISO_TIME_TIME_ZONE_FORMAT.getPattern(), timeZone);
- assertEquals("T10:11:12-03:00", text);
- text = DateFormatUtils.ISO_TIME_TIME_ZONE_FORMAT.format(cal);
- assertEquals("T10:11:12-03:00", text);
+ testGmtMinus3("T09:11:12", DateFormatUtils.ISO_TIME_FORMAT.getPattern());
+ testGmtMinus3("T09:11:12-03:00", DateFormatUtils.ISO_TIME_TIME_ZONE_FORMAT.getPattern());
+ testUTC("T09:11:12Z", DateFormatUtils.ISO_TIME_TIME_ZONE_FORMAT.getPattern());
}
@Test
public void testTimeNoTISO(){
- final TimeZone timeZone = TimeZone.getTimeZone("GMT-3");
- final Calendar cal = Calendar.getInstance(timeZone);
- cal.set(2002, Calendar.FEBRUARY, 23, 10, 11, 12);
- String text = DateFormatUtils.format(cal.getTime(),
- DateFormatUtils.ISO_TIME_NO_T_FORMAT.getPattern(), timeZone);
- assertEquals("10:11:12", text);
- text = DateFormatUtils.format(cal.getTime().getTime(),
- DateFormatUtils.ISO_TIME_NO_T_FORMAT.getPattern(), timeZone);
- assertEquals("10:11:12", text);
- text = DateFormatUtils.ISO_TIME_NO_T_FORMAT.format(cal);
- assertEquals("10:11:12", text);
-
- text = DateFormatUtils.format(cal.getTime(),
- DateFormatUtils.ISO_TIME_NO_T_TIME_ZONE_FORMAT.getPattern(), timeZone);
- assertEquals("10:11:12-03:00", text);
- text = DateFormatUtils.format(cal.getTime().getTime(),
- DateFormatUtils.ISO_TIME_NO_T_TIME_ZONE_FORMAT.getPattern(), timeZone);
- assertEquals("10:11:12-03:00", text);
- text = DateFormatUtils.ISO_TIME_NO_T_TIME_ZONE_FORMAT.format(cal);
- assertEquals("10:11:12-03:00", text);
+ testGmtMinus3("09:11:12", DateFormatUtils.ISO_TIME_NO_T_FORMAT.getPattern());
+ testGmtMinus3("09:11:12-03:00", DateFormatUtils.ISO_TIME_NO_T_TIME_ZONE_FORMAT.getPattern());
+ testUTC("09:11:12Z", DateFormatUtils.ISO_TIME_NO_T_TIME_ZONE_FORMAT.getPattern());
}
@Test
public void testSMTP(){
- final TimeZone timeZone = TimeZone.getTimeZone("GMT-3");
- final Calendar cal = Calendar.getInstance(timeZone);
- cal.set(2003, Calendar.JUNE, 8, 10, 11, 12);
- String text = DateFormatUtils.format(cal.getTime(),
- DateFormatUtils.SMTP_DATETIME_FORMAT.getPattern(), timeZone,
- DateFormatUtils.SMTP_DATETIME_FORMAT.getLocale());
- assertEquals("Sun, 08 Jun 2003 10:11:12 -0300", text);
- text = DateFormatUtils.format(cal.getTime().getTime(),
- DateFormatUtils.SMTP_DATETIME_FORMAT.getPattern(), timeZone,
- DateFormatUtils.SMTP_DATETIME_FORMAT.getLocale());
- assertEquals("Sun, 08 Jun 2003 10:11:12 -0300", text);
- text = DateFormatUtils.SMTP_DATETIME_FORMAT.format(cal);
- assertEquals("Sun, 08 Jun 2003 10:11:12 -0300", text);
+ TimeZone timeZone = TimeZone.getTimeZone("GMT-3");
+ Calendar june = createJuneTestDate(timeZone);
- // format UTC
- text = DateFormatUtils.formatUTC(cal.getTime().getTime(),
- DateFormatUtils.SMTP_DATETIME_FORMAT.getPattern(),
- DateFormatUtils.SMTP_DATETIME_FORMAT.getLocale());
- assertEquals("Sun, 08 Jun 2003 13:11:12 +0000", text);
+ assertFormats("Sun, 08 Jun 2003 10:11:12 -0300", DateFormatUtils.SMTP_DATETIME_FORMAT.getPattern(),
+ timeZone, june);
+
+ timeZone = TimeZone.getTimeZone("UTC");
+ june = createJuneTestDate(timeZone);
+ assertFormats("Sun, 08 Jun 2003 10:11:12 +0000", DateFormatUtils.SMTP_DATETIME_FORMAT.getPattern(),
+ timeZone, june);
}
/*
@@ -285,4 +228,46 @@ public class DateFormatUtilsTest {
TimeZone.setDefault(save);
}
}
+
+ /**
+ * According to LANG-916 (https://issues.apache.org/jira/browse/LANG-916),
+ * the format method did contain a bug: it did not use the TimeZone data.
+ *
+ * This method test that the bug is fixed.
+ */
+ @Test
+ public void testLang916() throws Exception {
+
+ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Paris"));
+ cal.clear();
+ cal.set(2009, 9, 16, 8, 42, 16);
+
+ // Long.
+ {
+ String value = DateFormatUtils.format(cal.getTimeInMillis(), DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern(), TimeZone.getTimeZone("Europe/Paris"));
+ assertEquals("long", "2009-10-16T08:42:16+02:00", value);
+ }
+ {
+ String value = DateFormatUtils.format(cal.getTimeInMillis(), DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern(), TimeZone.getTimeZone("Asia/Kolkata"));
+ assertEquals("long", "2009-10-16T12:12:16+05:30", value);
+ }
+ {
+ String value = DateFormatUtils.format(cal.getTimeInMillis(), DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern(), TimeZone.getTimeZone("Europe/London"));
+ assertEquals("long", "2009-10-16T07:42:16+01:00", value);
+ }
+
+ // Calendar.
+ {
+ String value = DateFormatUtils.format(cal, DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern(), TimeZone.getTimeZone("Europe/Paris"));
+ assertEquals("calendar", "2009-10-16T08:42:16+02:00", value);
+ }
+ {
+ String value = DateFormatUtils.format(cal, DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern(), TimeZone.getTimeZone("Asia/Kolkata"));
+ assertEquals("calendar", "2009-10-16T12:12:16+05:30", value);
+ }
+ {
+ String value = DateFormatUtils.format(cal, DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern(), TimeZone.getTimeZone("Europe/London"));
+ assertEquals("calendar", "2009-10-16T07:42:16+01:00", value);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/commons-lang/blob/775203dd/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java b/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java
index 1545642..6941f42 100644
--- a/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java
@@ -266,7 +266,7 @@ public class DurationFormatUtilsTest {
cal.set(Calendar.MILLISECOND, 1);
String text;
// repeat a test from testDateTimeISO to compare extended and not extended.
- text = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(cal);
+ text = DateFormatUtils.format(cal, DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern(), timeZone);
assertEquals("2002-02-23T09:11:12-03:00", text);
// test fixture is the same as above, but now with extended format.
text = DurationFormatUtils.formatPeriod(base.getTime().getTime(), cal.getTime().getTime(),
http://git-wip-us.apache.org/repos/asf/commons-lang/blob/775203dd/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java b/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java
index f8b4930..5aaa670 100644
--- a/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java
@@ -214,7 +214,7 @@ public class FastDatePrinterTest {
final DatePrinter format = getInstance("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", TimeZone.getTimeZone("GMT"));
assertEquals("dateTime", "2009-10-16T16:42:16.000Z", format.format(cal.getTime()));
- assertEquals("dateTime", "2009-10-16T08:42:16.000Z", format.format(cal));
+ assertEquals("dateTime", "2009-10-16T16:42:16.000Z", format.format(cal));
}
@Test
@@ -339,4 +339,32 @@ public class FastDatePrinterTest {
assertEquals("0002", getInstance("dddd", SWEDEN).format(cal));
assertEquals("00002", getInstance("ddddd", SWEDEN).format(cal));
}
+
+ /**
+ * According to LANG-916 (https://issues.apache.org/jira/browse/LANG-916),
+ * the format method did contain a bug: it did not use the TimeZone data.
+ *
+ * This method test that the bug is fixed.
+ */
+ @Test
+ public void testLang916() throws Exception {
+
+ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Paris"));
+ cal.clear();
+ cal.set(2009, 9, 16, 8, 42, 16);
+
+ // calendar fast.
+ {
+ String value = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss Z", TimeZone.getTimeZone("Europe/Paris")).format(cal);
+ assertEquals("calendar", "2009-10-16T08:42:16 +0200", value);
+ }
+ {
+ String value = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss Z", TimeZone.getTimeZone("Asia/Kolkata")).format(cal);
+ assertEquals("calendar", "2009-10-16T12:12:16 +0530", value);
+ }
+ {
+ String value = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss Z", TimeZone.getTimeZone("Europe/London")).format(cal);
+ assertEquals("calendar", "2009-10-16T07:42:16 +0100", value);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/commons-lang/blob/775203dd/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTimeZonesTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTimeZonesTest.java b/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTimeZonesTest.java
index 34ff2f5..3ae5f56 100644
--- a/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTimeZonesTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTimeZonesTest.java
@@ -57,7 +57,7 @@ public class FastDatePrinterTimeZonesTest {
final SimpleDateFormat sdf = new SimpleDateFormat(PATTERN);
sdf.setTimeZone(timeZone);
final String expectedValue = sdf.format(cal.getTime());
- final String actualValue = FastDateFormat.getInstance(PATTERN).format(cal);
+ final String actualValue = FastDateFormat.getInstance(PATTERN, this.timeZone).format(cal);
assertEquals(expectedValue, actualValue);
}