Почему Java SimpleDateFormat().parse() печатает странный формат?

StackOverflow https://stackoverflow.com/questions/2486550

Вопрос

Мой ввод представляет собой строку, имеющую следующий формат:

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

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

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

Это было полезно?

Решение

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

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

"странный" формат исходит из реализации Date toString, в javadoc говорится:

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

доу пн дд чч:мм:сс ззз гггг

"I just wanted to keep the same format of the original String date and make it into a Date object."

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

Другие советы

Должно быть ММ, а не мм.Строчные мм обозначают минуты, а не месяцы.

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss aa");

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top