2012-01-26 4 views
2

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

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

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?

ответ

1

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

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

Update:

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; 
+0

Этот формат является отличным и печатает мой объект даты так, как я этого хочу. Можно ли получить объекты Date, которые находятся в этом формате для сравнения? – Warz

+0

Чтобы распечатать (отобразить), вы используете его для форматирования объекта Date, и если у вас есть две разные даты (строки), которые находятся в этом формате, проанализируйте и сравните (используя Date.compareTo(), Date.before() или Date. after()) –

+0

Обязательно используйте Locale.US на вашем SimpleDateFormat – samottenhoff

2

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

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

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

// which one is sooner 
if(t1InSeconds < t2InSeconds) { 
    // f1 is older ... 
} 
+0

Я попытался с помощью SimpleDateFormat во многих способов получить данный формат. Возможно ли получить объект даты java в формате выше? Чтобы уточнить, я уверен, что есть формат, который я могу использовать для печати даты, но что, если я хочу сравнить две даты со второй детализацией, и они должны быть в формате, указанном выше. У вас есть примеры? – Warz

+0

Объекты даты не имеют формата, они всего лишь миллисекунда в UTC. – jtahlborn

+0

+1 для идеи сравнения времени – Warz

 Смежные вопросы

  • Нет связанных вопросов^_^