Piszę program, który musi określić czas ostatniej modyfikacji plików/katalogów. Chcę obsłużyć ten czas za pomocą Joda Time i używam Java 7 NIO.2 klasa Files
, aby uzyskać czas ostatniej modyfikacji pliku. Jego getLastModifiedTime()
metoda zwraca instancję FileTime
klasy, która ma wygodną metodę toMillis()
, którego wynik mijam do Joda czasu DateTime
konstruktora klasy:Java 7 NIO.2 Files.getLastModifiedTime strefa czasowa
new DateTime(Files.getLastModifiedTime(path).toMillis());
Mam jednak wrażenie, że robię to źle, ponieważ DateTime(long)
konstruktor wyraźnie wspomina, że instancja DateTime
zostanie utworzona z domyślną strefą czasową. FileTime
Dokumenty jednak nie wymieniają swojej strefy czasowej w dowolnym miejscu. Przejrzałem kod FileTime
; wydaje się być bardzo prosty, a jego metoda toString()
sugeruje, że używa strefy czasowej UTC (tworzy ona Calendar
w strefie czasowej UTC i ustawia jej milisekundy bezpośrednio).
Czy zatem FileTime
używa czasu UTC lub czasu lokalnego? Jaki jest prawidłowy sposób konwersji FileTime
na DateTime
?
Dziękuję, teraz rozumiem. Z jakiegoś powodu myślałem, że konstruktor 'DateTime' oczekuje znacznika czasu w lokalnej strefie czasowej, ale, jak powiedziałeś, znacznik czasu jest zawsze w UTC. Następnie argument 'DateTimeZone' w innym konstruktorze' DateTime' określa tylko sposób wyświetlania tego znacznika czasu. –