Se puede crear un objeto Date usando el número de milisegundos desde epoch desde un FileTime.
Date newDate = new Date( filetime.toMillis() );
Este ejemplo crea una Fecha llamada firstDate, no se pasa ningún parámetro al constructor, de esta forma el valor utilizado es la fecha y hora actuales. Esa fecha se convierte en un FileTime utilizando el método fromMillis del objeto FileTime. El segundo objeto Date se crea pasando el número de milisegundos de FileTime desde época en el constructor. Los tres valores se escriben en el resultado mostrando que son idénticos. Una prueba final verifica que los valores sean los mismos, luego formateamos la Fecha usando SimpleDateFormat. El valor legible para las personas se escribe en la salida.
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
El objeto FileTime es inmutable, no cambia una vez que se ha creado. Esto asegura que el valor no cambiará cuando se usa este objeto. El objeto Date no es seguro para subprocesos.