2

特定の時間に基づいて画像を選択するプログラムを書いています。ディレクトリ内の各画像の名前と、各画像を参照するための最終更新時刻を保存します。ただし、画像ごとに最終更新日を保存すると、なぜか1時間も遅れているようです。つまり、代わりに 1 時間後の画像が選択されています。

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 です。

4

2 に答える 2

1

File.lastModified() は、エポック (00:00:00 GMT、1970 年 1 月 1 日) から測定されたミリ秒で動作します。GMT タイムゾーンに注意してください。SimpleDateFormat はローカル タイム ゾーンを補正します。したがって、GMT から 1 時間ずれている場合は、それで説明できます。

http://docs.oracle.com/javase/7/docs/api/java/io/File.html#lastModified() http://docs.oracle.com/javase/7/docs/api/java/text /SimpleDateFormat.html#format(java.util.Date、java.lang.StringBuffer、java.text.FieldPosition )

于 2013-04-16T12:18:50.713 に答える
-2

原因はまだわかりませんが、すべての時間に手動で 1 時間を追加することで、プログラムを修正することができました。これは私がこの問題を解決したかった方法ではありませんが、現時点ではそれで解決できます!

問題を修正したコードを以下に示します

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

ありがとう :)

于 2012-06-13T01:03:46.097 に答える