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-io.git

commit 6813e574c56f205c1fa1a41b6c7008f49cbdb4b0
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Fri Dec 22 13:15:21 2023 -0500

    Add FileTimes.fromUnixTime(long)
    
    For Commons Compress
---
 src/changes/changes.xml                                       |  1 +
 .../java/org/apache/commons/io/file/attribute/FileTimes.java  | 11 +++++++++++
 .../org/apache/commons/io/file/attribute/FileTimesTest.java   |  8 ++++++++
 3 files changed, 20 insertions(+)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 1e8273d6..7addfdb6 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -85,6 +85,7 @@ The <action> type attribute can be add,update,fix,remove.
       <action dev="ggregory" type="add" issue="IO-826" due-to="markslater, 
Gary Gregory">Add BrokenWriter.BrokenWriter(Throwable).</action>
       <action dev="ggregory" type="add"                due-to="Gary 
Gregory">Add BoundedInputStream.getRemaining().</action>
       <action dev="ggregory" type="add"                due-to="Gary 
Gregory">Add FileTimes.toNtfsTime(long).</action>
+      <action dev="ggregory" type="add"                due-to="Gary 
Gregory">Add FileTimes.fromUnixTime(long).</action>
       <!--  UPDATE -->
       <action dev="ggregory" type="fix"                due-to="Gary 
Gregory">Bump commons.bytebuddy.version from 1.14.10 to 1.14.11 #534.</action>
     </release>
diff --git a/src/main/java/org/apache/commons/io/file/attribute/FileTimes.java 
b/src/main/java/org/apache/commons/io/file/attribute/FileTimes.java
index d1ca3651..6ddf0675 100644
--- a/src/main/java/org/apache/commons/io/file/attribute/FileTimes.java
+++ b/src/main/java/org/apache/commons/io/file/attribute/FileTimes.java
@@ -61,6 +61,17 @@ public final class FileTimes {
      */
     static final long HUNDRED_NANOS_PER_MILLISECOND = 
TimeUnit.MILLISECONDS.toNanos(1) / 100;
 
+    /**
+     * Converts standard UNIX time (in seconds, UTC/GMT) to {@link FileTime}.
+     *
+     * @param time UNIX timestamp (seconds).
+     * @return the corresponding FileTime.
+     * @since 2.16.0
+     */
+    public static FileTime fromUnixTime(final long time) {
+        return FileTime.from(time, TimeUnit.SECONDS);
+    }
+
     /**
      * Subtracts milliseconds from a source FileTime.
      *
diff --git 
a/src/test/java/org/apache/commons/io/file/attribute/FileTimesTest.java 
b/src/test/java/org/apache/commons/io/file/attribute/FileTimesTest.java
index 8151ccc2..2df06921 100644
--- a/src/test/java/org/apache/commons/io/file/attribute/FileTimesTest.java
+++ b/src/test/java/org/apache/commons/io/file/attribute/FileTimesTest.java
@@ -23,6 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 import java.nio.file.attribute.FileTime;
 import java.time.Instant;
 import java.util.Date;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Stream;
 
 import org.junit.jupiter.api.Test;
@@ -116,6 +117,13 @@ public class FileTimesTest {
 
     //
 
+    @ParameterizedTest
+    @MethodSource("dateToNtfsProvider")
+    public void testFromUnixTime(final String instant, final long ntfsTime) {
+        final long epochSecond = Instant.parse(instant).getEpochSecond();
+        assertEquals(epochSecond, 
FileTimes.fromUnixTime(epochSecond).to(TimeUnit.SECONDS));
+    }
+
     @Test
     public void testMinusMillis() {
         final int millis = 2;

Reply via email to