如何使用Java將文件時間轉換為日期

Date對象可以使用從FileTime開始的毫秒數來創建。

句法:

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

例:

這個例子創建一個叫做firstDate的Date,沒有參數傳遞給構造函數,這樣使用的值就是當前的日期和時間。 該日期使用FileTime對象的fromMillis方法轉換為FileTime。 然後創建第二個Date對象,傳遞構造函數中從epoch開始的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