Проблема с форматом Java для сравнения даты

#java

#java

Вопрос:

Пытаюсь сравнить некоторые даты в java, но не могу получить правильное форматирование, где я ошибаюсь?

 DateFormat df = new SimpleDateFormat("dd/mm/yyyy");
    Date date1 = null, date2 = null, today = new Date();
date1 = (Date) df.parse(scan.next());

System.out.println(date1);
            System.out.println(today);
if(date1.compareTo(today) < 0){
        date1 = null;
        System.out.println(start   " is not a valid date.. please try again!");
        }

Please enter a start date:
10/04/2011
Mon Jan 10 00:04:00 GMT 2011
Tue Apr 05 22:27:44 BST 2011
  

Комментарии:

1. Просто предложение, но взгляните на JodaTime. Я знаю, что это не ответ на ваш вопрос, но JodaTime предоставляет множество отличных функций для обработки дат.

2. Хотя JodaTime хорош, не является ли это излишеством для compareTo(...) ?

Ответ №1:

Я думаю, вам нужен MM, а не mm

Из документа:

M месяц в году
m Минута в часе

Ответ №2:

Измените строку 1 на: DateFormat df = новый SimpleDateFormat(«дд / ММ / гггг»);

мм в SimpleDateFormat — это минуты. ММ — это месяц. Итак, ваш ввод выполнен 10 января 2011 года в 00: 10:00

Проверьте http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html для сокращений и javadoc.