From 7da33a3adf1cebddf286db73ad7907f4c462735e Mon Sep 17 00:00:00 2001 From: Ariel Shkedi Date: Tue, 2 Mar 2021 11:00:38 -0500 Subject: [PATCH 1/3] Add toLocalDate to CalendarUtils --- .../org/apache/commons/lang3/time/CalendarUtils.java | 10 ++++++++++ .../apache/commons/lang3/time/CalendarUtilsTest.java | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/main/java/org/apache/commons/lang3/time/CalendarUtils.java b/src/main/java/org/apache/commons/lang3/time/CalendarUtils.java index 2cce6046846..e4cb7029df6 100644 --- a/src/main/java/org/apache/commons/lang3/time/CalendarUtils.java +++ b/src/main/java/org/apache/commons/lang3/time/CalendarUtils.java @@ -17,6 +17,7 @@ package org.apache.commons.lang3.time; +import java.time.LocalDate; import java.util.Calendar; import java.util.Objects; @@ -69,4 +70,13 @@ public int getMonth() { public int getYear() { return calendar.get(Calendar.YEAR); } + + /** + * Creates a LocalDate from a Calendar + * + * @return a LocalDate + */ + public LocalDate toLocalDate() { + return LocalDate.of(getYear(), getMonth()+1, getDayOfMonth()); + } } diff --git a/src/test/java/org/apache/commons/lang3/time/CalendarUtilsTest.java b/src/test/java/org/apache/commons/lang3/time/CalendarUtilsTest.java index 3ae5a965170..a1aa9e5d5f2 100644 --- a/src/test/java/org/apache/commons/lang3/time/CalendarUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/time/CalendarUtilsTest.java @@ -19,7 +19,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; +import java.time.LocalDate; import java.util.Calendar; +import java.util.GregorianCalendar; +import java.util.TimeZone; import org.junit.jupiter.api.Test; @@ -40,4 +43,12 @@ public void testGetYear() { assertEquals(Calendar.getInstance().get(Calendar.YEAR), CalendarUtils.INSTANCE.getYear()); } + @Test + public void testToLocalDate() { + Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT")); + calendar.setTimeInMillis(-27078001200000l); + assertEquals(LocalDate.of(1111, 12, 1), new CalendarUtils(calendar).toLocalDate()); + calendar.setTimeInMillis(1614700215000l); + assertEquals(LocalDate.of(2021, 3, 2), new CalendarUtils(calendar).toLocalDate()); + } } From a9753bdf229fe568edd9e8181334bdc414ebd193 Mon Sep 17 00:00:00 2001 From: asgh Date: Tue, 2 Mar 2021 11:13:30 -0500 Subject: [PATCH 2/3] typo --- .../java/org/apache/commons/lang3/time/CalendarUtilsTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/apache/commons/lang3/time/CalendarUtilsTest.java b/src/test/java/org/apache/commons/lang3/time/CalendarUtilsTest.java index a1aa9e5d5f2..88f38870856 100644 --- a/src/test/java/org/apache/commons/lang3/time/CalendarUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/time/CalendarUtilsTest.java @@ -46,9 +46,9 @@ public void testGetYear() { @Test public void testToLocalDate() { Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT")); - calendar.setTimeInMillis(-27078001200000l); + calendar.setTimeInMillis(-27078001200000L); assertEquals(LocalDate.of(1111, 12, 1), new CalendarUtils(calendar).toLocalDate()); - calendar.setTimeInMillis(1614700215000l); + calendar.setTimeInMillis(1614700215000L); assertEquals(LocalDate.of(2021, 3, 2), new CalendarUtils(calendar).toLocalDate()); } } From 9834ab14172dcf2155cd10e6126e9a008b15879f Mon Sep 17 00:00:00 2001 From: asgh Date: Tue, 2 Mar 2021 11:48:15 -0500 Subject: [PATCH 3/3] use month names instead of numbers Calendar uses 0-11 and LocalDate uses 1-12, so use constants to avoid confusion. --- .../org/apache/commons/lang3/time/CalendarUtilsTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/apache/commons/lang3/time/CalendarUtilsTest.java b/src/test/java/org/apache/commons/lang3/time/CalendarUtilsTest.java index 88f38870856..99f5f224c64 100644 --- a/src/test/java/org/apache/commons/lang3/time/CalendarUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/time/CalendarUtilsTest.java @@ -20,6 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import java.time.LocalDate; +import java.time.Month; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.TimeZone; @@ -47,8 +48,8 @@ public void testGetYear() { public void testToLocalDate() { Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT")); calendar.setTimeInMillis(-27078001200000L); - assertEquals(LocalDate.of(1111, 12, 1), new CalendarUtils(calendar).toLocalDate()); + assertEquals(LocalDate.of(1111, Month.DECEMBER, 1), new CalendarUtils(calendar).toLocalDate()); calendar.setTimeInMillis(1614700215000L); - assertEquals(LocalDate.of(2021, 3, 2), new CalendarUtils(calendar).toLocalDate()); + assertEquals(LocalDate.of(2021, Month.MARCH, 2), new CalendarUtils(calendar).toLocalDate()); } }