This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git


The following commit(s) were added to refs/heads/master by this push:
     new 80e6a6764 Add CalendarUtils.toLocalDate() #725
80e6a6764 is described below

commit 80e6a67649ec10d67f5a574c8e93248615c347ca
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Tue Nov 5 06:31:03 2024 -0500

    Add CalendarUtils.toLocalDate() #725
---
 src/changes/changes.xml                                 |  1 +
 .../org/apache/commons/lang3/time/CalendarUtils.java    | 11 +++++++++++
 .../apache/commons/lang3/time/CalendarUtilsTest.java    | 17 +++++++++++++++++
 3 files changed, 29 insertions(+)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index eaaef7d13..f1566c437 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -73,6 +73,7 @@ The <action> type attribute can be add,update,fix,remove.
     <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add LongRange.toLongStream().</action>
     <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add IntStrams.of(int...).</action>
     <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add ArrayUtils.containsAny(int[], int...).</action>
+    <action                   type="add" dev="ggregory" due-to="asgh, Gary 
Gregory">Add CalendarUtils.toLocalDate() #725.</action>
     <!-- UPDATE -->
     <action                   type="update" dev="ggregory" due-to="Gary 
Gregory, Dependabot">Bump org.apache.commons:commons-parent from 73 to 78 
#1267, #1277, #1283, #1288, #1302.</action>
     <action                   type="update" dev="ggregory" due-to="Gary 
Gregory, Dependabot">Bump org.codehaus.mojo:taglist-maven-plugin from 3.1.0 to 
3.2.1 #1300.</action> 
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 cd6868844..e4671a3d1 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.time.LocalDateTime;
 import java.time.OffsetDateTime;
 import java.time.ZoneId;
@@ -193,6 +194,16 @@ public class CalendarUtils {
         return calendar.get(Calendar.YEAR);
     }
 
+    /**
+     * Converts this instance to a {@link LocalDate}.
+     *
+     * @return a LocalDateTime.
+     * @since 3.18.0
+     */
+    public LocalDate toLocalDate() {
+        return toLocalDateTime().toLocalDate();
+    }
+
     /**
      * Converts this instance to a {@link LocalDateTime}.
      *
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 067f1b923..572602d28 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,9 @@ package org.apache.commons.lang3.time;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.Month;
 import java.time.OffsetDateTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
@@ -32,6 +34,7 @@ import org.apache.commons.lang3.AbstractLangTest;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
+import org.junitpioneer.jupiter.DefaultTimeZone;
 
 public class CalendarUtilsTest extends AbstractLangTest {
 
@@ -91,6 +94,20 @@ public class CalendarUtilsTest extends AbstractLangTest {
         assertEquals(Calendar.getInstance().get(Calendar.YEAR), 
CalendarUtils.INSTANCE.getYear());
     }
 
+    /**
+     * Tests {@link CalendarUtils#toLocalDate()} from 
https://github.com/apache/commons-lang/pull/725.
+     */
+    @Test
+    @DefaultTimeZone("GMT-5")
+    public void testToLocalDate() {
+        final Calendar calendar = new 
GregorianCalendar(TimeZone.getTimeZone(TimeZones.GMT_ID));
+        calendar.setTimeInMillis(-27078001200000L);
+        assertEquals("1111-12-08T05:00:00Z", calendar.toInstant().toString());
+        assertEquals(LocalDate.of(1111, Month.DECEMBER, 8), new 
CalendarUtils(calendar).toLocalDate());
+        calendar.setTimeInMillis(1614700215000L);
+        assertEquals(LocalDate.of(2021, Month.MARCH, 2), new 
CalendarUtils(calendar).toLocalDate());
+    }
+
     @ParameterizedTest
     @MethodSource(TimeZonesTest.TIME_ZONE_GET_AVAILABLE_IDS)
     public void testToLocalDateTime(final String timeZoneId) {

Reply via email to