2015-11-03 68 views
2

我有下面的Java代碼。無法獲得新時間

Date date = new Date(); 
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
String startFormattedDate = sdf.format(date); 
System.out.println(startFormattedDate); 
Thread.sleep(10000L); 
String endFormattedDate = sdf.format(date); 
System.out.println(endFormattedDate); 

這裏基本上我試圖實現的是,打印當前時間,等待10秒鐘,然後再打印時間。但令我驚訝的是,控制檯在10秒後同時打印。請讓我知道如何在等待10秒後獲得時間。因爲我需要根據兩個時間做一些計算。

回答

3

您始終使用相同的Date實例。爲了達到你想要什麼,你需要時間

Date date = new Date(); 
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
String startFormattedDate = sdf.format(date); 
System.out.println(startFormattedDate); 
Thread.sleep(10000L); 
Date after10Seconds = new Date(); //here 
String endFormattedDate = sdf.format(after10Seconds); 
System.out.println(endFormattedDate); 
2

由於使用了相同的變量日期。它在10秒後也顯示相同的數據。你需要在10秒後重新初始化它。

1

的新實例創建超時後新Date對象來獲取當前時間:

String endFormattedDate = sdf.format(new Date()); 

,你當然可以10000 ms加起來上一次並得到一個類比 結果沒有超時:

Date current = new Date(date.getTime() + 10000); 
String endFormattedDate = sdf.format(current); 
1

我想這是因爲你做只有一個章安Date()的開始處。嘗試在打印開始日期後執行此操作。

Date date = new Date(); 
SimpleDateFormat edf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
String endFormattedDate = edf.format(date); 
System.out.println(endFormattedDate);