Ява 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 и хронологии в часовом поясе по умолчанию, который определяет, как значение миллисекунды преобразуется в поля времени даты.