2012-06-12 59 views
1

我在寫一個程序,它根據特定的時間選擇圖像。我將每個圖像的名稱存儲在一個目錄中,並將其最後修改時間存儲爲引用每個圖像。但是,當爲每個圖像存儲上次修改日期時,由於某種原因,它似乎落後了小時。這意味着一小時後的圖像被選中。lastModified()後面一小時

System.out.println(listOfFiles[i].getName()); 

originalImageNames.add(listOfFiles[i].getAbsolutePath()); 

date = listOfFiles[i].lastModified(); 
Date fDate = new Date(date); 

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm"); 
String dateString = sdf.format(fDate); 
System.out.println(dateString); 

originalImageDates.add(dateString); 

正在打印正確的圖像名稱,但該圖像的最後修改時間爲10:29。但是,打印並存儲的圖像日期是09:29。

+2

你在夏天的時候?時間正在從系統中消失,所以它不應該發生,除非你的時鐘延遲 –

+0

是的我的系統調整爲夏令時。 – user1224534

+0

我剛剛通過選擇一個圖像進行檢查,並解析其最後修改時間,如下所示,它仍然導致在通過資源管理器檢查實際上次修改前一小時的時間。我不知道爲什麼。有什麼辦法可以在分析的時間內添加一小時嗎? – user1224534

回答

-2

我仍然不知道原因,但我設法通過在所有時間手動添加一小時來修復我的程序。這不是我想要解決這個問題的方法,但是在這個時候它會這樣做!

該固定該問題的代碼如下所示

Calendar gc = new GregorianCalendar(); 
    gc.setTime(fDate); 
    gc.add(Calendar.HOUR, 1); 
    java.util.Date d2 = gc.getTime(); 

謝謝:)

+1

這應該從未**完成。永遠不能! – Dariusz

+0

這應該從來沒有**完成,因爲當時鍾再次改變時,你的代碼將會提前一個小時,並再次破壞。 – Alan