簡體   English   中英

Java文件在默認時區上次修改?

[英]Java File last modified in default timezone?

我想在我的計算機時區中獲取上次修改的日期(與我在Windows文件資源管理器中看到的日期相同)

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

從文檔myFile.lastModified()

返回:一個長值,表示文件的上次修改時間,以自該時間段(1970年1月1日格林尼治標准時間00:00:00,毫秒)開始的毫秒數;如果文件不存在或發生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!");
}

您可以簡單地使用ZonedDateTime對象,並對其應用系統的默認時間偏移。

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

然后,您可以簡單地打印出該對象或對其進行進一步處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM