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;