Java SimpleDateFormat и сравнить с - PullRequest
       15

Java SimpleDateFormat и сравнить с

1 голос
/ 09 марта 2010

У меня вопрос по поводу класса SimpleDateFormat и метода сравнения java.util.Date:

Я создаю объект Date, затем форматирую, наконец разбираю отформатированную строку и сравниваю с исходной датой.

DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS");
Date originalDate = new Date();

String s = df.format(originalDate);
Date parsedDate = df.parse(s);

System.out.println("Original date: " + originalDate);
System.out.println("Formatted date: " + s);
System.out.println("originalDate compareTo parsedDate: " + originalDate.compareTo(parsedDate));

Результат:

Первоначальная дата: понедельник, 25 января 15:43:23 CET. 2010 Форматированная дата: 2010.jan.25 03:43:23 868 оригиналСравнить дату parsedDate: 1

Почему я всегда получаю «1»? Почему исходная дата теряет проанализированную дату?

Ответы [ 3 ]

4 голосов
/ 09 марта 2010

Я думаю, что это проблема, связанная с 24 часами, ваша исходная дата - 15, поэтому 3 часа дня, в то время как ваша проанализированная - в формате 12 часов, потому что вы использовали h спецификатор формата вместо H спецификатор формата. Ваш час затем превращается в неправильную строку, поэтому вы теряете точность, потому что при разборе 03 считается 3 утра. Попробуйте с:

DateFormat df = new SimpleDateFormat("yyyy.MMMdd HH:mm:ss SSS");
1 голос
/ 09 марта 2010

Если вы хотите просто сравнить даты, возможно, лучше использовать getTime () для сравнения двух значений ...

1 голос
/ 09 марта 2010

Работает, если добавить маркер Am / pm - a

DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS a");
...