2017-02-13 4 views
-1

LocalDate을 사용하여 문자열 date = "20160101"을 "January 1,2016"으로 변경해야합니다. 는 지금, 내 코드는 다음과 같습니다Java에서 LocalDate를 사용하여 문자열을 변경하십시오.

DateTimeFormatter formatter = DateTimeFormatter.BASIC_ISO_DATE; 
LocalDate date = LocalDate.parse("20120403", formatter); 
System.out.println(date); 

출력은 다음과 같습니다 2016년 1월 1일

나는 DateTimeFormatterBuilder 그렇게하는 데 사용할 필요하거나 더 쉬운 방법이 있습니까? 감사합니다.

+1

https://docs.oracle.com/javase/tutorial/datetime/iso /format.html – shmosel

답변

1

빌더를 사용해야하지 않습니다. DateTimeFormatter는 문자열에서 직접 만들 수 있습니다. here

1

LocalDate#toString 메서드는 ISO-8601 형식의 uuuu-MM-dd 형식으로 날짜를 인쇄합니다. 그래서 출력이 2016-01-01이되는 것입니다. 대신 "January 1,2016"형식으로 출력해야하는 경우 날짜를 MMM d, yyyy 형식으로 다시 지정해야합니다.

DateTimeFormatter formatter = DateTimeFormatter.BASIC_ISO_DATE; 
LocalDate date = LocalDate.parse("20120403", formatter); 
String strDate = date.format(DateTimeFormatter.ofPattern("MMM d, yyyy")); 
System.out.println(strDate); 
+0

도움 주셔서 감사합니다. – Ahab

+0

문자열로 반환 할 수 없습니다. LocalDate로 반환해야합니다. 내가 그것을 인쇄하려고 한 유일한 이유는 내가 그것을 시험하고 싶었 기 때문이다. – Ahab

+0

그런 경우 이미 LocalDate 개체가 있습니다. 'date' 객체는 실제로 LocalDate 객체입니다. 무엇이 잘못 되었습니까?> – VHS

0

날짜 - 시간 객체는

는 귀하의 의견은 당신이 자신의 값을 나타내는 문자열을 날짜 - 시간 객체를 가미하여하는 것을 나타냅니다 어떤 형식에게이 없다.

날짜/시간 개체에는 형식이 없습니다. 객체는 값을 나타 내기 위해 문자열을 생성 할 수 있지만 이러한 문자열은 별개이며 별개입니다. 마찬가지로 날짜 - 시간 객체는 문자열을 파싱하여 인스턴스화 할 수 있지만 새 날짜 객체는 구별되어 구분됩니다. 당신이 특정 형식의 패턴을 지정 Answer by VHS 같이

당신은 문자열을 생성 할 수 지역화

. 그러나 일반적으로 더 나은 방법은 java.time이 자동으로 지역화되도록하는 것입니다.

지정, 현지화 :

  • FormatStyle 문자열이 있어야 할 시간 또는 약식 결정.
  • Locale (a) 이름, 월 이름 등의 번역을위한 인간 언어 및 (b) 약어, 대문자, 구두점, 분리 기호 등의 문제를 결정하는 문화적 규범을 결정할 수 있습니다.

예 :

Locale l = Locale.CANADA_FRENCH ; // Or Locale.US, Locale.ITALY, etc. 
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(l); 
String output = myLocalDate.format(f); 

DateTimeFormatterBuilder 클래스는 특별한 요구를위한 것입니다. 일반적으로 필요한 것은 DateTimeFormatter 클래스입니다.

code run live at IdeOne.com을 참조하십시오. 그러나 IdeOne.com 웹 사이트의 Java 구현에는 제한이 있습니다. 대체 로케일은 무시되며 단일 영어 로켈 (아마도 Locale.US)로 하드 코딩됩니다.

DateTimeFormatter formatter = DateTimeFormatter.BASIC_ISO_DATE; 
LocalDate localDate = LocalDate.parse("20120403", formatter); 

String outputStandard = localDate.toString(); 

DateTimeFormatter fCanadaFrench = 
    DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG) 
        .withLocale(Locale.CANADA_FRENCH) ; 
String outputCanadaFrench = localDate.format(fCanadaFrench) ; 

DateTimeFormatter fUS = 
    DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG) 
        .withLocale(Locale.US) ; 
String outputUS = localDate.format(fUS) ; 

LOCALDATE.toString() : 2012-04-03

outputCanadaFrench : 3 에이브릴 2012

outputUS 4 월 3, 2012

관련 문제