Javaを使用してFileTimeを日付に変換する方法

Dateオブジェクトは、FileTimeからのエポックからのミリ秒数を使用して作成できます。

構文:

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

例:

この例では、firstDateというDateを作成します。パラメータはコンストラクタに渡されません。このように、使用される値は現在の日付と時刻です。 その日付は、FileTimeオブジェクトのfromMillisメソッドを使用してFileTimeに変換されます。 次に、2番目のDateオブジェクトは、コンポーザー内のEpoch以降のFileTimeのミリ秒数を渡して作成されます。 これらの3つの値は、それらが同一であることを示す出力に書き込まれます。 最後のテストでは、値が同じであることを確認した後、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