Java를 사용하여 FileTime을 Date로 변환하는 방법

Date 객체는 FileTime의 에포크 이후의 밀리 초 수를 사용하여 만들 수 있습니다.

통사론:

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

예:

이 예제에서는 firstDate라는 Date를 만들고 매개 변수를 생성자에 전달하지 않고이 방법은 현재 날짜와 시간을 사용합니다. 이 날짜는 FileTime 객체의 fromMillis 메서드를 사용하여 FileTime으로 변환됩니다. 두 번째 Date 객체는 생성자에서 FileTime 이후의 시간 (밀리 초)을 전달하여 생성됩니다. 세 개의 값은 출력에 기록되어 동일 함을 나타냅니다. 마지막 테스트에서 값이 동일한 지 확인한 다음 SimpleDateFormat을 사용하여 Date 형식을 지정합니다. 사람이 읽을 수있는 값이 출력에 기록됩니다.

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
	

FileTime 객체는 불변이며 일단 생성되면 변경되지 않습니다. 이렇게하면이 객체를 사용할 때 값이 변경되지 않습니다. Date 객체는 스레드로부터 안전하지 않습니다.

참고 문헌 :

FileTime