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

FileTime 객체는 Java의 Instant Object를 사용하여 LocalDateTime으로 변환됩니다.

통사론:


LocalDateTime ldt =  LocalDateTime.ofInstant( FILE_TIME.toInstant(), ZoneId.systemDefault());

예:

이 예제에서는 현재 날짜가있는 Date 객체를 만듭니다. Object는 현재 시간을 사용하여 FileTime으로 변환됩니다. FileTime은 Instant를 사용하여 LocalDateTime으로 변환됩니다. 세 날짜는 모두 epoc로 변환되어 동일한 날짜를 표시합니다. LocalDateTime은 DateTimeFormatter 및 Medium 형식을 사용하여 형식화되며 값은 지역화되어 출력에 표시됩니다.

import java.nio.file.attribute.FileTime;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

public class FileTimeDateTime {

    public static void main(String[] argv) {

	// 날짜 만들기
	Date firstDate = new Date();
	
	// 날짜에서 FileTime 만들기
	FileTime time = FileTime.fromMillis( firstDate.getTime() );

	// FileTime을 LocalDateTime으로 변환하십시오
	LocalDateTime ldt =  LocalDateTime.ofInstant( time.toInstant(), ZoneId.systemDefault());
	

	// 모든 날짜에 대한 신기원 이후 경과 한 시간 (초)을 표시합니다.
	System.out.println("밀리 초 단위의 날짜 :\t" +  firstDate.getTime() / 1000 );
	System.out.println("FileTime (밀리 초) :\t" + time.toMillis() / 1000 );
	System.out.println("LocalDateTime (밀리 초) :\t" + ldt.toEpochSecond( ZoneOffset.ofHours( TimeZone.getDefault().getRawOffset() / (3600*1000)  ) ) );
	
    
	System.out.println();
    	System.out.println("LocalDateTime을 String으로 표시 : " 
    		+ ldt.format( DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)
    			.withLocale( Locale.KOREAN ) ) );
    }

}

출력은 다음과 같습니다.

	
밀리 초 단위의 날짜 :	1562370872
LocalDateTime을 String으로 표시 :1562370872
LocalDateTime 밀리 초: 1562374472

LocalDateTime을 String으로 표시 : 2019. 7. 5 오후 4:54:32

세 날짜는 모두 신기원 이후 초 수가 동일합니다.

참고 문헌 :

FileTime
Package java.time