From bc0354f22e1d42a2a08016fd2d577f1e65d9d35c Mon Sep 17 00:00:00 2001 From: Uri Gonen Date: Thu, 31 Dec 2020 19:02:50 +0200 Subject: [PATCH 1/4] LANG-1637: fix 2 digit week year formatting --- .../apache/commons/lang3/time/FastDatePrinter.java | 2 +- .../commons/lang3/time/FastDatePrinterTest.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) 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 658e3cacbe6..9778abc7ccb 100644 --- a/src/main/java/org/apache/commons/lang3/time/FastDatePrinter.java +++ b/src/main/java/org/apache/commons/lang3/time/FastDatePrinter.java @@ -1118,7 +1118,7 @@ public void appendTo(final Appendable buffer, final Calendar calendar) throws IO */ @Override public final void appendTo(final Appendable buffer, final int value) throws IOException { - appendDigits(buffer, value); + appendDigits(buffer, value % 100); } } 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 096cbbb2c2d..cbd878e8bb2 100644 --- a/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java +++ b/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java @@ -432,4 +432,15 @@ public void testDayNumberOfWeek() { calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); assertEquals("7", printer.format(calendar.getTime())); } + + @DefaultLocale(language = "en", country = "US") + @DefaultTimeZone("America/New_York") + @Test + public void testWeekYear() { + final GregorianCalendar cal = new GregorianCalendar(2020, 12, 31, 0, 0, 0); + final DatePrinter printer4Digits = getInstance("YYYY"); + final DatePrinter printer2Digits = getInstance("YY"); + assertEquals("2021", printer4Digits.format(cal)); + assertEquals("21", printer2Digits.format(cal)); + } } From bdccc9926d8f6a84440eac81816fe94e9968ca36 Mon Sep 17 00:00:00 2001 From: Uri Gonen Date: Sat, 2 Jan 2021 18:08:49 +0200 Subject: [PATCH 2/4] LANG-1637: added test cases for Y & YYY patterns --- .../org/apache/commons/lang3/time/FastDatePrinterTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 cbd878e8bb2..0b57749cb25 100644 --- a/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java +++ b/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java @@ -40,7 +40,8 @@ * * @since 3.0 */ -public class FastDatePrinterTest { +public class +FastDatePrinterTest { private static final String YYYY_MM_DD = "yyyy/MM/dd"; private static final TimeZone NEW_YORK = TimeZone.getTimeZone("America/New_York"); @@ -439,8 +440,12 @@ public void testDayNumberOfWeek() { public void testWeekYear() { final GregorianCalendar cal = new GregorianCalendar(2020, 12, 31, 0, 0, 0); final DatePrinter printer4Digits = getInstance("YYYY"); + final DatePrinter printer3Digits = getInstance("YYY"); final DatePrinter printer2Digits = getInstance("YY"); + final DatePrinter printer1Digit = getInstance("Y"); assertEquals("2021", printer4Digits.format(cal)); + assertEquals("2021", printer3Digits.format(cal)); + assertEquals("2021", printer1Digit.format(cal)); assertEquals("21", printer2Digits.format(cal)); } } From fd4bb4ab89678ce29fd18d8fc20bcfb57f146a8f Mon Sep 17 00:00:00 2001 From: Uri Gonen Date: Sat, 2 Jan 2021 18:13:08 +0200 Subject: [PATCH 3/4] LANG-1637: added test cases for Y & YYY patterns --- .../apache/commons/lang3/time/FastDatePrinterTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 0b57749cb25..62a2deb9915 100644 --- a/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java +++ b/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java @@ -440,12 +440,12 @@ public void testDayNumberOfWeek() { public void testWeekYear() { final GregorianCalendar cal = new GregorianCalendar(2020, 12, 31, 0, 0, 0); final DatePrinter printer4Digits = getInstance("YYYY"); - final DatePrinter printer3Digits = getInstance("YYY"); + final DatePrinter printer4DigitsFallback = getInstance("YYY"); final DatePrinter printer2Digits = getInstance("YY"); - final DatePrinter printer1Digit = getInstance("Y"); + final DatePrinter printer4DigitAnotherFallback = getInstance("Y"); assertEquals("2021", printer4Digits.format(cal)); - assertEquals("2021", printer3Digits.format(cal)); - assertEquals("2021", printer1Digit.format(cal)); + assertEquals("2021", printer4DigitsFallback.format(cal)); + assertEquals("2021", printer4DigitAnotherFallback.format(cal)); assertEquals("21", printer2Digits.format(cal)); } } From b1ad8ae3ea910e37cfc69b18d70158861942739d Mon Sep 17 00:00:00 2001 From: Uri Gonen Date: Sat, 2 Jan 2021 18:14:38 +0200 Subject: [PATCH 4/4] LANG-1637: added test cases for Y & YYY patterns --- .../org/apache/commons/lang3/time/FastDatePrinterTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 62a2deb9915..13ba5fe03f4 100644 --- a/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java +++ b/src/test/java/org/apache/commons/lang3/time/FastDatePrinterTest.java @@ -40,8 +40,7 @@ * * @since 3.0 */ -public class -FastDatePrinterTest { +public class FastDatePrinterTest { private static final String YYYY_MM_DD = "yyyy/MM/dd"; private static final TimeZone NEW_YORK = TimeZone.getTimeZone("America/New_York");