2015-01-27 13 views
36

Ho una variabile LocalDate chiamata data, quando stampo mostra 1988-05-05 Ho bisogno di convertirlo per essere stampato come 05.Maggio 1988.Come fare?Come formattare LocalDate in stringa?

+3

Dai un'occhiata alla classe [DateTimeFormatter] (http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html). Ha anche esempi di come convertire da e verso 'String's. – azurefrog

+2

Dovresti mostrare del codice, cosa hai provato fino ad ora e cosa non funziona in modo che le persone possano aiutarti. – bvidal

+0

Ho provato a farlo ma a causa di questa noiosa cosa che non soddisfa i nostri standard di qualità ho finalmente rinunciato, mi ci sono voluti 15 minuti solo per postare questo perché ho dovuto correggere "i" con "I". – Jasko

risposta

104

SimpleDateFormat non funziona se sta iniziando con LocalDate, che è nuovo in Java 8. Da quello che vedo, è necessario utilizzare 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); 

Questo dovrebbe Print 05 maggio 1988. Per ottenere il periodo successivo al giorno e prima del mese, potrebbe essere necessario usare "dd'.LLLL yyyy"

+3

Grazie mille, questo aiuta, ma non ha funzionato con 'LLLL' per mostrare il nome del mese ma con 'MMMM' l'ho trovato strano visto che anche nella documentazione dice altrimenti.But ancora una volta grazie per l'aiuto me. – Jasko

+0

Now localDate.format (formatter); non funziona affatto –

+0

quale versione JDK tuo Utilizzo di @ProgrammersBlock –

-6

Un modo molto piacevole per fare questo è quello di utilizzare SimpleDateFormat io vi mostrerò come:

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

vedo che hai la data in una variabile:

sdf.format(variable_name); 

Cin cin.

+1

'SimpleDateFormat' può funzionare con' LocalDate'? – Tom

+0

Cosa intendi con "può lavorare con"? – nom

+2

OP desidera stampare il contenuto di un'istanza 'LocalDate' in un formato specifico. Come potrebbe 'SimpleDateFormat' aiutarlo qui? – Tom

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

Attenzione, lingua del mese dipende dalle impostazioni locali o qualcosa del genere.

see more

0

Con l'aiuto di tutti i messaggi ProgrammersBlock sono arrivato fino a questo. Le mie esigenze erano leggermente diverse. Avevo bisogno di prendere una stringa e restituirla come un oggetto LocalDate. Mi è stato consegnato il codice che utilizzava il vecchio calendario e SimpleDateFormat. Volevo renderlo un po 'più attuale. Questo è quello che mi è venuto in mente.

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

} 

Speriamo che questo vi aiuterà qualcuno, se qualcuno vede un modo migliore di fare questo compito si prega di aggiungere il vostro input.

Problemi correlati