2013-06-13 3 views
0

У меня возникают проблемы с получением правильного формата для DateTime. Я ожидаю формат dd/MM/yyyy HH: mm: ss, и я получаю слишком много подробностей. Например:DateTimeFormatter не работает должным образом с JODA

 DateTime dt; 
     String timeStamp = day + "/" + month + "/" + year + " " + hour + ":" + minute + ":00"; 
     DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss"); 
     dt = formatter.parseDateTime(timeStamp); 

И я получаю такие вещи, как:

2013-06-13T00:15:00.000+02:00 

Таким образом, почему форматировщик не форматирования, как ожидалось? Любые подсказки?

Спасибо! Alex

+0

Um, потому что у вас есть 'дт = новый DateTime()' и поэтому не сохраняется любое использование форматере? Кроме того, что вы используете для вывода 'DateTime' для получения этого результата? Покажите этот код. –

+0

Последняя строка - это ошибка копирования и вставки, я, очевидно, не воссоздаю объект там снова :) – AlejandroVK

ответ

0

Вы сказали форматиру, как читать свою ручную работу timeStamp String. Вы не сообщили своей системе, как вывести полученный объект DateTime.

Как Даниэль Арндт отметил, ниже, вы делаете это так:

System.out.println(dt.toString(formatter)); 

Поймите, что DateTime объекта не имеет формата. Формат - это то, что превращает строку в объект DateTime и объект DateTime в строку. То, что вы видите на экране, всегда является строкой. Поэтому, если вы делаете вывод своего объекта DateTime, как указано выше, вам также нужно сообщить системе, как его форматировать. Если вы этого не сделаете, он будет использовать системный формат по умолчанию, что и произошло, когда вы получили строку 2013-06-13T00:15:00.000+02:00.

Краткая история: Ваш DateTime объект содержит правильные данные. И если вы предоставите правильный формат, он будет выглядеть так, как вы ожидаете, когда вы его выведете.

+0

Ага, любая идея, как это сделать? – AlejandroVK

+0

@AlejandroVK Я только что отредактировал свой ответ с дополнительной информацией. Надеюсь, это поможет. –

+0

Это было мое понимание, просто хотелось быть уверенным, спасибо, правильный ответ! – AlejandroVK

1

Вы используете форматировщик для разбора, а не для форматирования. Если вы использовали его для форматирования, например, например. с помощью метода print() вы увидите строку, которую вы ожидаете.

Также вы просматриваете строку и сразу же заменяете ее текущим временем. Я бы удалил вам последнюю строку или все строки перед ней.

+0

Спасибо, но ... Я не хочу, чтобы строка была в конце, я хочу сохранить объект DateTime, так как его член класса данных, таким образом, если я проверяю полученный объект DateTime ... но я думаю, мне придется изменить его на String и отказаться от использования DateTime – AlejandroVK

+0

@AlejandroVK DateTime - это дата и время, t имеет формат. Когда вы пытаетесь распечатать, он просто использует формат по умолчанию для этого типа. Только строка имеет формат, но это всего лишь кучка символов. Вы не должны путать кучу символов со значением, которое представляет время или число, поскольку они не одно и то же. –

+0

Это правильно, спасибо – AlejandroVK

0

Линия

dt = new DateTime(); 

заменяет все ваши усилия, поставленных вами before.So, пожалуйста, удалите его и распечатать dt

+0

Спасибо за ответ, но это была ошибка копирования и вставки, моя ошибка – AlejandroVK

+0

Нет, не исправлены, предлагаемые решения отображают только возвращающую String, что мне не нужно, нужна дата-время с dd/MM/yyyy HH: mm: ss format ... – AlejandroVK

0

Вам нужно напечатать дату с форматером. Следующий код должен работать, если вы преформ его до dt = new DateTime(); линии:

System.out.println(dt.toString(formatter));