Файл Java последний раз изменялся в часовом поясе по умолчанию? - PullRequest
0 голосов
/ 07 июня 2018

Я хотел бы получить дату последнего изменения в часовом поясе моего компьютера (то же самое, что я вижу в проводнике Windows)

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

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Вы можете просто использовать объект ZonedDateTime и применить к нему системное смещение по умолчанию.

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

Затем вы можете просто распечатать этот объект или продолжить работу с ним.

0 голосов
/ 07 июня 2018

Из документации myFile.lastModified()

Возвращает: Длинное значение, представляющее время последней модификации файла, измеренное в миллисекундах с начала эпохи (00:00:00 по Гринвичу, 1 января 1970 г.) или 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!");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...