Sto scrivendo un programma che deve determinare i file/le directory dell'ultima ora modificata. Voglio gestire questa volta utilizzando Joda Time e sto utilizzando la classe NIO.2 Java 7 Files
per ottenere l'ultima modifica del file. Il suo metodo di getLastModifiedTime()
restituisce un'istanza di FileTime
classe, che dispone di un comodo metodo toMillis()
, il cui risultato mi passa a Joda Tempo DateTime
costruttore di classe:Java 7 NIO.2 Fuso orario Files.getLastModifiedTime
new DateTime(Files.getLastModifiedTime(path).toMillis());
Tuttavia, ho la sensazione che sto facendo questo torto, dal momento che DateTime(long)
il costruttore menziona esplicitamente che l'istanza DateTime
verrà creata con il fuso orario predefinito. I documenti FileTime
, tuttavia, non menzionano il fuso orario da nessuna parte. Ho controllato il codice FileTime
; sembra essere molto semplice, e il suo metodo toString()
suggerisce che sta usando il fuso orario UTC (crea un Calendar
in fuso orario UTC e ne imposta direttamente i millisecondi).
Quindi, FileTime
utilizza UTC o ora locale? Qual è il modo corretto di convertire FileTime
in DateTime
?
Grazie, ora capisco. Per qualche ragione ho pensato che il timestamp previsto dal 'DateTime' constructor nel fuso orario locale, ma, come hai detto, il timestamp è sempre in UTC. Quindi l'argomento 'DateTimeZone' in un altro costruttore' DateTime' definisce solo come dovrebbe essere visualizzato questo timestamp. –