[java] LocalDate에 대한 문자열

문자열을 LocalDate어떻게?

다음과 같은 예를 보았습니다.

LocalDate dt = new LocalDate("2005-11-12");

하지만 내 문자열은 다음과 같습니다.

2005-nov-12



답변

Joda Time을 사용할 때 다음을 사용해야합니다 DateTimeFormatter.

final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
final LocalDate dt = dtf.parseLocalDate(yourinput);

Java 8 이상을 사용하는 경우 hertzi의 답변 을 참조하십시오.


답변

java.time

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);

구문은 거의 동일합니다.


답변

DateTime에서 LocalDate로 이동해야 할 수 있습니다.

Joda 시간 사용 :

DateTimeFormatter FORMATTER = DateTimeFormat.forPattern("yyyy-MMM-dd");
DateTime dateTime = FORMATTER.parseDateTime("2005-nov-12");
LocalDate localDate = dateTime.toLocalDate();


답변

날짜 시간 형식화는 org.joda.time.format.DateTimeFormatter class. 세 개의 클래스는 포맷터를 생성 하는 팩토리 메서드를 제공 하며 이것은 하나입니다. 나머지는 ISODateTimeFormatDateTimeFormatterBuilder입니다.

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
}


답변