2015-01-27 16 views
36

Mam zmienną LocalDate o nazwie date, kiedy wydrukuję ją wyświetla 1988-05-05 Muszę przekonwertować to na drukowany jako 05. May 1988.Jak to zrobić?Jak sformatować LocalDate do napisu?

+3

Zobacz klasę [DateTimeFormatter] (http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html). Zawiera nawet przykłady konwersji do i od 'String'ów. – azurefrog

+2

Powinieneś pokazać kod, co wypróbowałeś do tej pory i co nie działa, aby ludzie mogli Ci pomóc. – bvidal

+0

Próbowałem to zrobić, ale z powodu tego irytującego "nie spełnia naszych standardów jakościowych", w końcu się poddałem, zajęło mi to 15 minut, aby opublikować to, ponieważ musiałem poprawić "i" za pomocą "I". – Jasko

Odpowiedz

104

SimpleDateFormat nie będzie działać, jeśli zaczyna od LocalDate, który jest nowy w Javie 8. Z tego co widzę, będziesz musiał użyć 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); 

To powinno wydrukować 05 maja 1988. Aby uzyskać okresie po dniu i przed miesiącem, może trzeba użyć „dd'.LLLL yyyy”

+3

Bardzo dziękuję, to pomogło, ale nie zadziałało z "LLLL", aby pokazać nazwę miesiąca, ale z "MMMM" znalazłem to dziwne, ponieważ nawet w dokumentacji mówi inaczej. Ale jeszcze raz dziękuję za pomoc mnie. – Jasko

+0

Teraz localDate.format (formatter); w ogóle nie działa –

+0

którą wersję JDK używam @ProgrammersBlock –

-6

A całkiem dobry sposób, aby to zrobić jest użycie SimpleDateFormat pokażę ci jak:

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

widzę, że masz datę w zmiennej:

sdf.format(variable_name); 

Cheers.

+1

'SimpleDateFormat' może współpracować z' LocalDate'? – Tom

+0

Co masz na myśli mówiąc "możesz pracować"? – nom

+2

OP chce wydrukować zawartość instancji 'LocalDate' w określonym formacie. W jaki sposób "SimpleDateFormat" może mu w tym pomóc? – Tom

-4
LocalDate date = LocalDate.now();//For reference 
System.out.println(DateTimeFormat.longDate().print(date)); 
System.out.println(date.toString("dd.MMMM YYYY")); 

uwaga, język miesiąca zależy od lokalizacji lub czegoś.

see more

0

Z pomocą słupków ProgrammersBlock wpadłem na to. Moje potrzeby były nieco inne. Musiałem wziąć ciąg znaków i zwrócić go jako obiekt LocalDate. Dostałem kod, który korzystał ze starszych kalendarzy i SimpleDateFormat. Chciałem, żeby było trochę bardziej aktualne. Oto, co wymyśliłem.

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

} 

Mam nadzieję, że to pomoże komuś, jeśli ktoś zobaczy lepszy sposób wykonania tego zadania, proszę dodać swoje dane wejściowe.