У меня есть дата в виде строки в следующем формате "04/02/2011 20:27:05"
. Я использую библиотеку Joda-Time и хотел бы преобразовать ее в DateTime
объект. Я сделал:
DateTime dt = new DateTime("04/02/2011 20:27:05")
Но я получаю следующую ошибку:
Invalid format: "04/02/2011 14:42:17" is malformed at "/02/2011 14:42:17"
Как преобразовать указанную дату в DateTime
объект?
java.time
пакета в Java 8, попробуйте использоватьLocalDateTime.parse
илиInstant.parse
.Ответы:
Используйте
DateTimeFormat
:источник
toString
функции, но я не могу разобрать из него:Invalid format: "31. Januar 2013 06:38:08 MEZ" is malformed at "MEZ"
. Это известная проблема? Как я могу избежать этого? С уважением.Я знаю, что это старый вопрос, но я хотел бы добавить, что в JodaTime 2.0 вы можете сделать это с помощью одной строки:
источник
источник
Из комментариев я выбрал ответ, а также добавив TimeZone:
источник
Ваш формат не соответствует ожидаемому формату ISO, вам следует попробовать
источник
Вы также можете использовать SimpleDateFormat , как в
DateTimeFormat
источник
java.util.Date
,java.util.Calendar
иjava.text.SimpleDateFormat
теперь унаследованные , вытеснены классами java.time, встроенными в Java 8 и Java 9. См. Руководство Oracle . И классы java.time являются поточно-ориентированными, в отличие от устаревших классов.Вам нужен DateTimeFormatter, соответствующий формату, который вы используете. Посмотрите на документы для получения инструкций о том, как его создать.
С манжеты, думаю, тебе нужно
format = DateTimeFormat.forPattern("M/d/y H:m:s")
источник
ТЛ; др
java.time
Современный подход использует классы java.time, которые вытесняют почтенную Joda-Time .
Анализировать как,
LocalDateTime
поскольку в вашем входе отсутствует индикатор часового пояса или смещения от UTC.Совет: Где возможно, используйте стандартные форматы ISO 8601 при обмене значениями даты и времени в виде текста, а не в формате, представленном здесь. Для удобства, классы java.time используют стандартные форматы при разборе / генерации строк.
О java.time
Java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять неприятные старые устаревшие классы даты и времени , такие как
java.util.Date
,Calendar
, иSimpleDateFormat
.Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, смотрите Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .
Где взять классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Вы можете найти некоторые полезные классы здесь , такие как
Interval
,YearWeek
,YearQuarter
, и более .источник
Простой метод:
источник
Это может быть достигнуто двумя способами .
DateTimeFormat
SimpleDateFormat
источник
SimpleDateFormat
- это плохо, по моему мнению.