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對像不是線程安全的。