LocalDate를 문자열로 포맷하는 방법은 무엇입니까?


156

1988-05-05를 표시 할 때 date라는 LocalDate 변수가 있는데 이것을 1988 년 5 월 5 일로 인쇄되도록 변환해야합니다.


3
DateTimeFormatter 클래스를 살펴보십시오 . 심지어 Strings 로 변환하는 방법에 대한 예제도 있습니다 .
azurefrog

2
사람들이 당신을 도울 수 있도록 몇 가지 코드, 지금까지 시도한 것과 작동하지 않는 것을 보여 주어야합니다.
bvidal

나는 그것을 시도했지만 마침내 성가신 "우리의 품질 기준을 충족하지 않습니다"라는 말 때문에, "I"로 "i"를 수정해야했기 때문에 이것을 게시하는 데 15 분이 걸렸습니다.
Jasko

답변:


306

Java 8의 새로운 LocalDate로 시작하면 SimpleDateFormat이 작동하지 않습니다. 내가 볼 수 있듯이 DateTimeFormatter, http://docs.oracle.com/javase/8/docs/api/java/ 를 사용해야합니다. time / format / DateTimeFormatter.html .

LocalDate localDate = LocalDate.now();//For reference
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyyy");
String formattedString = localDate.format(formatter);

1988 년 5 월 5 일을 인쇄해야합니다. 하루와 그 다음 달의 기간을 얻으려면 "dd'.LLLL yyyy"를 사용해야 할 수도 있습니다.


4
대단히 감사합니다. 이것이 도움이 되긴하지만 월의 이름을 표시하기 위해 'LLLL'과 함께 작동하지 않았지만 'MMMM'과는 다르게 문서에 나와 있기 때문에이 이상한 것을 발견했습니다.하지만 다시 한 번 감사드립니다. .
Jasko

2
이제 localDate.format (formatter); 전혀 작동하지 않습니다
EngineSense

@ProgrammersBlock을 사용하는 JDK 버전
Lova Chittumuri

29

다음과 같이 짧을 수 있습니다.

LocalDate.now().format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));

3
System.out.println(LocalDate.now().format(DateTimeFormatter.ofPattern("dd.MMMM yyyy")));

위의 답변은 오늘 그것을 보여줍니다.


ofPatterns
Mahdi

0

ProgrammersBlock 게시물의 도움으로 이것을 생각해 냈습니다. 내 요구는 약간 달랐습니다. 문자열을 가져 와서 LocalDate 객체로 반환해야했습니다. 이전 Calendar 및 SimpleDateFormat을 사용하는 코드를 받았습니다. 좀 더 최신 상태로 만들고 싶었습니다. 이것이 내가 생각해 낸 것입니다.

    import java.time.LocalDate;
    import java.time.format.DateTimeFormatter;


    void ExampleFormatDate() {

    LocalDate formattedDate = null;  //Declare LocalDate variable to receive the formatted date.
    DateTimeFormatter dateTimeFormatter;  //Declare date formatter
    String rawDate = "2000-01-01";  //Test string that holds a date to format and parse.

    dateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE;

    //formattedDate.parse(String string) wraps the String.format(String string, DateTimeFormatter format) method.
    //First, the rawDate string is formatted according to DateTimeFormatter.  Second, that formatted string is parsed into
    //the LocalDate formattedDate object.
    formattedDate = formattedDate.parse(String.format(rawDate, dateTimeFormatter));

}

누군가 가이 작업을 수행하는 더 좋은 방법을 발견하면 입력을 추가하십시오.


나는 더 좋은 방법을 본다 LocalDate.parse(rawDate). String.format여기에 완전히 잘못된 형식으로 사용되고 있으며 실제로 첫 번째 문자열을 반환합니다. 는 DateTimeFormatter전혀 사용하지 않는; parsestatic방법이다 LocalDate; formattedDate입니다 하지 포맷 된 날짜조차 String(문제의 요청에 따라)
user85421는

0

joda lib에 대해 LocalDate를 형식화하는 기본 제공 방법이 있습니다.

import org.joda.time.LocalDate;

LocalDate localDate = LocalDate.now();
String dateFormat = "MM/dd/yyyy";
localDate.toString(dateFormat);

아직없는 경우-build.gradle에 추가하십시오.

implementation 'joda-time:joda-time:2.9.5'

행복한 코딩! :)


1
javadoc에 따르면 아닙니다.
Edward

@Edward, 그렇지 않은 경우이를 증명하고 더 나은 솔루션을 제공하십시오.
Inoy

1
LocalDate.toString (String pattern)이 존재하지 않음을 증명하고 싶습니까? 해당 메소드가 존재하는 경우 해당 메소드에 대한 참조를 제공하십시오. javadoc에서 찾을 수 없었습니다. 해결책에 관해서는이 질문에는 이미 있습니다.
에드워드

@Edward, 당신이 그것을 찾는 데 어려움을 겪고있는 것 같습니다. 내 답변을 업데이트했습니다.
Inoy

Joda Time은 "내장"되지 않습니다. OP는 joda.time이 아닌 java.time.LocalDate를 사용하는 것 같습니다
Edward

-11

이 작업을 수행하는 가장 좋은 방법은 다음을 사용 SimpleDateFormat하는 것입니다.

SimpleDateFormat sdf = new SimpleDateFormat("d MMMM YYYY");
Date d = new Date();
sdf.format(d);

변수에 날짜가 있음을 알았습니다.

sdf.format(variable_name);

건배.


3
OP는 LocalDate인스턴스 의 내용을 특정 형식 으로 인쇄하려고 합니다. SimpleDateFormat그를 어떻게 도울 수 있습니까?
Tom
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.