Java文件最后修改为默认时区?

时间:2018-06-07 08:16:00

标签: java file date

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

System.out.println(myFile.lastModified()); // I get UTC

2 个答案:

答案 0 :(得分:3)

来自文档myFile.lastModified()

  

返回:表示文件上次修改时间的长值,以纪元(格林威治标准时间00:00:00)为单位,以毫秒为单位,   1970年1月1日),如果文件不存在或者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

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

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!");
}

答案 1 :(得分:1)

您只需使用ZonedDateTime对象并将系统的默认时间偏移应用于该对象。

ZonedDateTime zt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(myFile.lastModified()), ZoneId.systemDefault());

然后,您可以简单地打印出这个对象或进一步使用它。