Java 文件最后一次修改是在默认时区吗?

lip*_*cid 1 java date file

我想获取我的计算机时区的最后修改日期(与我在 Windows 文件资源管理器中看到的相同)

System.out.println(myFile.lastModified()); // I get UTC
Run Code Online (Sandbox Code Playgroud)

YCF*_*F_L 5

来自文档myFile.lastModified()

返回:一个长整型值,表示文件上次修改的时间,以纪元(1970 年 1 月 1 日 00:00:00 GMT)以来的毫秒为单位,如果文件不存在或发生 I/O 错误,则返回 0L

所以你需要将其转换为日期,如果你使用的是Java 8+,你可以使用java.time API,如下所示:

LocalDateTime date = LocalDateTime.ofInstant(
        Instant.ofEpochMilli(myFile.lastModified()), ZoneId.systemDefault()
);

System.out.println(date);//example result : 2018-06-06T15:05:19.113
Run Code Online (Sandbox Code Playgroud)

如果你想要更高的精度,你可以使用:

File myFile = new File("pathname");
Long timeMs = myFile.lastModified();
if (timeMs != 0) {
    LocalDateTime date = LocalDateTime.ofInstant(
            Instant.ofEpochMilli(myFile.lastModified()), ZoneId.systemDefault()
    );
    System.out.println(date);
}else{
    System.out.println("File not exist!");
}
Run Code Online (Sandbox Code Playgroud)