Um objeto Date pode ser criado usando o número de milissegundos desde a época de um FileTime.
Date newDate = new Date( filetime.toMillis() );
Este exemplo cria uma data chamada firstDate, nenhum parâmetro é passado para o construtor, desta forma o valor usado é a data e hora atuais. Essa data é convertida em um FileTime usando o método fromMillis do objeto FileTime. O segundo objeto Date é criado passando o número de milissegundos do FileTime desde a época no construtor. Os três valores são então escritos na saída, mostrando que são idênticos. Um teste final verifica se os valores são os mesmos e, em seguida, formatamos a Data usando SimpleDateFormat. O valor legível humano é então escrito na saída.
import java.nio.file.attribute.FileTime;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileTimeDate {
public static void main(String[] argv) {
Date firstDate = new Date();
FileTime time = FileTime.fromMillis( firstDate.getTime() );
Date newDate = new Date( time.toMillis() );
System.out.println("firstDate milliseconds:\t" + firstDate.getTime() );
System.out.println("FileTime milliseconds:\t" + time.toMillis() );
System.out.println("newDate milliseconds:\t" + newDate.getTime() );
if( time.toMillis() == firstDate.getTime() && newDate.getTime() == time.toMillis()){
String pattern = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
System.out.println("All the Dates are equal: " + simpleDateFormat.format( firstDate ) );
}
}
}
firstDate milliseconds: 1525827617236
FileTime milliseconds: 1525827617236
newDate milliseconds: 1525827617236
All the Dates are equal: 2018-05-08 18:00:17
O objeto FileTime é imutável, ele não é alterado depois de criado. Isso garante que o valor não seja alterado ao usar este objeto. O objeto Date não é thread-safe.