답변:
Joda Time을 사용할 때 다음을 사용해야합니다 DateTimeFormatter
.
final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
final LocalDate dt = dtf.parseLocalDate(yourinput);
Java 8 이상을 사용하는 경우 hertzi의 답변 을 참조하십시오.
Java 1.8부터는 java.time 클래스 를 사용하여 추가 라이브러리없이이를 수행 할 수 있습니다. 튜토리얼을 참조하십시오 .
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);
구문은 거의 동일합니다.
날짜 시간 형식화는 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
인 스레드 안전 불변 것을 제공 연표은 물론이다. 제공된 모든 표준 Chronology 클래스는 스레드로부터 안전하며 변경할 수 없습니다.
DateTimeFormatter
문자 시퀀스를 구문 분석하는 데 직접 사용할 수있는 내장 형식이 있습니다. 대소 문자를 구분하며 Nov는 작동하지만 nov 및 NOV는 작동하지 않습니다.
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
try {
LocalDate datetime = LocalDate.parse(oldDate, pattern);
System.out.println(datetime);
} catch (DateTimeParseException e) {
// DateTimeParseException - Text '2019-nov-12' could not be parsed at index 5
// Exception handling message/mechanism/logging as per company standard
}
DateTimeFormatterBuilder
포맷터를 만드는 사용자 지정 방법을 제공합니다. 대소 문자를 구분하지 않습니다. Nov, nov 및 NOV는 동일하게 처리됩니다.
DateTimeFormatter f = new DateTimeFormatterBuilder().parseCaseInsensitive()
.append(DateTimeFormatter.ofPattern("yyyy-MMM-dd")).toFormatter();
try {
LocalDate datetime = LocalDate.parse(oldDate, f);
System.out.println(datetime); // 2019-11-12
} catch (DateTimeParseException e) {
// Exception handling message/mechanism/logging as per company standard
}