Como converter um FileTime em uma data usando Java

Um objeto Date pode ser criado usando o número de milissegundos desde a época de um FileTime.

Sintaxe:

Date newDate = new Date( filetime.toMillis() );

Exemplo:

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 ) );
	}
    }

}

O resultado será:

	
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.

Referências:

FileTime