Простой формат даты неправильно форматируется - PullRequest
0 голосов
/ 08 марта 2012

Я пишу программу, которая должна найти разницу между двумя датами, используя формат java.util.date. Я использую класс SimpleDateFormat для синтаксического анализа ввода строки, но, похоже, он разбирается неправильно. Вот мой код Я ценю любую помощь

SimpleDateFormat s = new SimpleDateFormat("yyyy/mm/dd");
Date startDate = s.parse(dateField.getText()); //input is 2012/03/10
System.out.println(START_DATE);//output is Tue Jan 10 00:03:00 MST 2012      

Ответы [ 4 ]

5 голосов
/ 08 марта 2012

Вы должны использовать yyyy/MM/dd вместо yyyy/mm/dd.Потому что mm для минут и MM для месяца

1 голос
/ 08 марта 2012

Когда вы печатаете объект Date, вы печатаете представление объекта .toString () .

Преобразует этот объект Date в строку вида:

Доу Мон ДД чч: мм: сс зззгггг

Если вы хотите распечатать его в определенном формате, вы должны использовать SimpleDateFormat.format ()

Итак, чтобы ответить на ваш вопрос, если вы хотите просто напечатать его в том же формате, в котором вы его получили, просто используйте

System.out.println(s.format(startDate));

Как указывает @Namal ниже, обязательно исправьте свой SimpleDateFormat, чтобы использовать правильный формат. mm представляет минуты. MM представляет месяцы.

0 голосов
/ 08 марта 2012
SimpleDateFormat s = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Date startDate = new Date();
System.out.println(s.format(startDate));

выходы

Thu Mar 08 15:23:57 EST 2012
0 голосов
/ 08 марта 2012

Ваши 3 строки кода независимы друг от друга. Вы создаете объект SimpleDateFormat с именем s, затем используете объект javaDate для анализа строки, а затем печатаете объект START_DATE.

...