Come posso convertire una stringa in LocalDate
?String to LocalDate
Ho visto esempi come:
LocalDate dt = new LocalDate("2005-11-12");
Ma le mie corde sono come:
2005-nov-12
Come posso convertire una stringa in LocalDate
?String to LocalDate
Ho visto esempi come:
LocalDate dt = new LocalDate("2005-11-12");
Ma le mie corde sono come:
2005-nov-12
Come si utilizza Joda tempo, si dovrebbe usare DateTimeFormatter
:
final DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MMM-dd");
final LocalDate dt = dtf.parseLocalDate(yourinput);
Se si utilizza Java 8 o versione successiva, quindi fare riferimento alla hertzi's answer
Potrebbe essere necessario passare da DateTime LocalDate.
DateTimeFormatter FORMATTER = DateTimeFormat.forPattern("yyyy-MMM-dd");
DateTime dateTime = FORMATTER.parseDateTime("2005-nov-12");
LocalDate localDate = dateTime.toLocalDate();
grazie. questo è perfetto quando si usano versioni precedenti che mancano 'LocalDate.parse' e' DateTimeFormatter.parseLocalDate' – thedarklord47
Datetime formattazione viene eseguita dal org.joda.time.format.DateTimeFormatter class
. Tre classi forniscono i metodi di produzione per creare i formattatori e questo è uno. Gli altri sono ISODateTimeFormat
e DateTimeFormatterBuilder
.
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MMM-dd");
LocalDate lDate = new LocalDate().parse("2005-nov-12",format);
final org.joda.time.LocalDate class
è una classe DateTime immutabile rappresenta una data senza fuso orario. LocalDate
è thread-safe e immutable, purché sia la cronologia Chronology. Tutte le classi di cronologia standard fornite sono thread-safe e immutabili.
Da Java 1.8, è possibile ottenere questo senza una libreria in più:
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);
la sintassi è quasi lo stesso però.
java.time.format.DateTimeParseException: non è stato possibile analizzare il testo "2005-nov-12" all'indice 5 –
Ciò accade perché l'impostazione predefinita locale prevede che la "N" di "Nov" sia maiuscola. – hertzi
Vedere [mia risposta] (http://stackoverflow.com/a/38904830/642706) a una domanda simile per ulteriori discussioni su questo approccio. –
+1 per l'utilizzo di DateTimeFormatter.parseLocalDate(), sebbene l'utente stia cercando un mese di 3 lettere. –
Oops ... Risolto, grazie (mi insegnerà a leggere oltre) – fge
Inoltre, ho inviato una modifica per il formato "aaaa-MMM-gg". YYYY è l'anno dell'era e (più egregiamente) DD è il giorno dell'anno. –