Почему Java SimpleDateFormat (). Parse () печатает странный формат? - PullRequest
1 голос
/ 21 марта 2010

Мой вход имеет формат строки:

3/4/2010 10:40:01 AM
3/4/2010 10:38:31 AM

Мой код:

DateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss aa");
            try
            {
                Date today = dateFormat.parse(time);
                System.out.println("Date Time : " + today);

            }
            catch (ParseException e)
            {
                e.printStackTrace();
            }

вывод:

Sun Jan 03 10:38:31 AST 2010
Sun Jan 03 10:40:01 AST 2010

Я не уверен, откуда пришел день (Солнце)? или (АСТ)? а почему дата неверная? Я просто хотел сохранить тот же формат исходной даты String и сделать его объектом Date .

Я использую версию Netbeans 6.8 для Mac.

Ответы [ 5 ]

7 голосов
/ 21 марта 2010

Должно быть ММ, а не мм. Нижний регистр мм - минуты, а не месяцы.

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss aa");
4 голосов
/ 21 марта 2010

MM, а не mm в течение месяца. Вы используете mm дважды - и по логике, это одно и то же - минуты.

3 голосов
/ 21 марта 2010

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

System.out.println("Date Time : "+ dateFormat.format(today));

«странный» формат происходит из реализации DateString, javadoc говорит:

Преобразует этот объект Date в строку вида: Доу пн дд чч: мм: сс зззгггг
"I just wanted to keep the same format of the original String date and make it into a Date object."

Объект Date предназначен для представления определенного момента времени, вы не можете сохранить в нем формат исходной строки, поэтому у нас есть класс DateFormat.

2 голосов
/ 21 марта 2010

Ответ прост.Вы показали сегодняшнее значение Date.toString (), а не предполагаемую версию dateFormat.что вам нужно это:

System.out.println("Date Time : " + dateFormat.format(today) );
1 голос
/ 21 марта 2010

Печать Date out с использованием System.out.println () приводит к тому, что метод toString () вызывается для объекта Date.

Строка формата, используемая в toString (), является причиной появления дня недели и часового пояса в выходных данных.

Это не относится к ошибке синтаксического анализа, указанной Даффи.

...