Ява 7 НИО.2 файлов.часовой пояс getLastModifiedTime

я пишу программу, которая должна определить файлы/каталоги, времени последнего изменения. Я хочу обработать это время, используя время Joda, и я использую Java 7 NIO.2 класс Files чтобы получить файл последнего измененного времени. Его getLastModifiedTime() метод возвращает экземпляр FileTime класс, который имеет удобный способ toMillis(), чей результат я передаю Джоде времени DateTime конструктор класса:

new DateTime(Files.getLastModifiedTime(path).toMillis());

однако у меня такое чувство, что я делаю это неправильно, так как DateTime(long) конструктор явно упоминает, что DateTime экземпляр будет создан с часовым поясом по умолчанию. FileTime документы, однако, не упоминают его часовой пояс нигде. Я посмотрел сквозь FileTime код; он кажется очень простым, и его toString() метод предполагает, что он использует часовой пояс UTC (он создает Calendar в часовом поясе UTC и устанавливает его миллисекунды напрямую).

Итак,FileTime использует UTC или местное время? Каков правильный способ преобразования FileTime to DateTime?

2 ответов


метку Ява миллисекунды-это время UTC. Это что!--0--> возвращается, и что за DateTime конструктор ожидает. То же самое относится и к другим методам API Java; например,System.currentTimeMillis() методом java.util.Date конструктора, и так далее.

они все работают одинаково. И, действительно, то же самое делают другие методы библиотеки Unix / Linux / OSX на других языках программирования.

единственный случай, когда это прерывается, если кто-то неправильно настраивает / устанавливает системные часы.


значение filetime.API toMillis () говорит, что возвращает значение в миллисекундах, начиная с эпохи (1970-01-01T00:00:00Z). new DateTime (millis) создает экземпляр DateTime, который удерживает время в миллисекундах от эпохи Java 1970-01-01T00:00:00Z и хронологии в часовом поясе по умолчанию, который определяет, как значение миллисекунды преобразуется в поля времени даты.