2

我正在编写一个根据特定时间选择图像的程序。我将每个图像的名称存储在一个目录中,以及它最后修改时间以引用每个图像。但是,在存储每个图像的最后修改日期时,由于某种原因,它似乎落后了一个小时。这意味着将选择一小时后的图像。

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,1970 年 1 月 1 日)开始以毫秒为单位运行。请注意 GMT 时区。SimpleDateFormat 补偿您当地的时区;所以如果你离格林威治标准时间一小时,那就可以解释了。

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

我仍然不知道原因,但我设法通过手动添加一小时来修复我的程序。这不是我想要解决这个问题的方式,但在这个时间点上它会做到的!

解决问题的代码如下所示

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

谢谢 :)

于 2012-06-13T01:03:46.097 回答