Получение правильного формата GMT с использованием объекта DateFormat - PullRequest
2 голосов
/ 26 января 2012

Если у меня есть объект File, как я могу получить lastModified() дату этого файла в этом формате GMT: Mon, 23 Jun 2011 17:40:23 GMT.

Например, когда я вызываю java-метод lastModified() для файла и использую объект DateFormat в getDateTimeInstance(DateFormat.Long, DateFormat.Long), а также устанавливаю TimeZone в GMT, дата файла отображается в другом формате:

File fileE = new File("/Some/Path");
Date fileDate = new Date (fileE.lastModified());
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.Long, DateFormat.Long);
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("file date " + dateFormat.format(fileDate));

Печатается в следующем формате:

January 26, 2012 7:11:46 PM GMT

Мне кажется, я близок к тому, чтобы получить его в формате выше, и мне не хватает только дня. Должен ли я использовать вместо SimpleDateFormat объект?

Ответы [ 2 ]

2 голосов
/ 26 января 2012

Да, статические экземпляры DateFormat будут зависеть от локали. Если вы хотите определенный формат, вы должны использовать SimpleDateFormat с соответствующим шаблоном формата.

Если вы хотите сравнить 2 раза измененных файлов со второй гранулярностью, просто разделите их на 1000, например ::1003

long t1InSeconds = f1.lastModified() / 1000L;
long t2InSeconds = f2.lastModified() / 1000L;

// which one is sooner
if(t1InSeconds < t2InSeconds) {
  // f1 is older ...
}
1 голос
/ 26 января 2012

Используйте SimpleDateFormat с шаблоном следующим образом:

DateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss z");

Обновление:

Date d1 = new Date(file1.lastModified());
Date d2 = new Date(file2.lastModified());

Вы можете сравнить их следующим образом:

d1.compareTo(d2);
d1.before(d2);
d1.after(d2);

Почему вы хотите сравнить их с точностью до секунды?

Если вы хотите получить разницу в секундах:

int diffInSeconds = (int) (d1.getTime() - d2.getTime()) / 1000;
...