Как преобразовать строку в LocalDate
?String to LocalDate
Я видел примеры, как:
LocalDate dt = new LocalDate("2005-11-12");
Но мои строки, как:
2005-nov-12
Как преобразовать строку в LocalDate
?String to LocalDate
Я видел примеры, как:
LocalDate dt = new LocalDate("2005-11-12");
Но мои строки, как:
2005-nov-12
Как вы используете Joda время, вы должны использовать DateTimeFormatter
:
final DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MMM-dd");
final LocalDate dt = dtf.parseLocalDate(yourinput);
При использовании Java 8 или более поздней версии, то обратитесь к hertzi's answer
Вы, возможно, придется перейти от DateTime к LocalDate.
DateTimeFormatter FORMATTER = DateTimeFormat.forPattern("yyyy-MMM-dd");
DateTime dateTime = FORMATTER.parseDateTime("2005-nov-12");
LocalDate localDate = dateTime.toLocalDate();
спасибо. это прекрасно, когда вы используете более старые версии, которые не имеют «LocalDate.parse» и «DateTimeFormatter.parseLocalDate» – thedarklord47
Datetime форматирование выполняется org.joda.time.format.DateTimeFormatter class
, Три класса предоставляют заводские методы для создания форматировщиков, и это одно. Остальные - ISODateTimeFormat
и DateTimeFormatterBuilder
.
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MMM-dd");
LocalDate lDate = new LocalDate().parse("2005-nov-12",format);
final org.joda.time.LocalDate class
непреложный класс DateTime, представляющий собой дату без временной зоны. LocalDate
является поточно-безопасным и неизменным, при условии, что Хронология также. Все стандартные классы хронологии, поставляемые, являются потокобезопасными и неизменяемыми.
Поскольку Java 1.8, вы можете добиться этого без дополнительной библиотеки:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
formatter = formatter.withLocale(putAppropriateLocaleHere); // Locale specifies human language for translating, and cultural norms for lowercase/uppercase and abbreviations and such. Example: Locale.US or Locale.CANADA_FRENCH
LocalDate date = LocalDate.parse("2005-nov-12", formatter);
Синтаксис почти такой же, хотя.
java.time.format.DateTimeParseException: текст «2005-нов-12» не может быть проанализирован по индексу 5 –
Это происходит потому, что ваш стандарт по умолчанию ожидает, что «N» в «Нове» будет верхним регистром. – hertzi
См. [Мой ответ] (http://stackoverflow.com/a/38904830/642706) на аналогичный вопрос для более подробного обсуждения этого подхода. –
+1 для использования DateTimeFormatter.parseLocalDate(), хотя пользователь ищет 3-буквенный месяц. –
Упс ... Исправлено, спасибо (научит меня читать дальше) – fge
Также представлено редактирование формата «yyyy-MMM-dd». ГГГГ - год эры, и (более вопиюще) ДД - это день года. –