2012-05-31 2 views
5

In una classe java, ottengo la data come stringa diciamo "renewDate" dal modulo di input datepicker in mm/gg/aaaa.Formattazione della data utilizzando la libreria di tempo Joda

Quando provo ad aggiornare il codice utilizzando joda biblioteca tempo

DateTime expireDate = new DateTime(renewDate); 
// i get error at above line 
updateOrganization.setRenewdate(expireDate.toDate()); 
organizationDAO.update(updateOrganization); 

ma se formatto la data nella forma cioè, da mm/gg/aaaa a aaaa-mm-dd ed invialo a la classe java funziona bene.

Come posso formattare la data da mm/gg/aa aa aaaa-mm-gg in classe Java. L'input è Stringformat.

+0

Che tipo di DatePicker? AWT, SWT, JSF, JS ...? – Thor

+0

Prova a cercare l'API di datepickers per parole chiave come "pattern". – JMelnik

risposta

15

L'elenco dei formati validi per il costruttore che si sta utilizzando sono dettagliate nella javadoc of ISODateTimeFormat, che non include "gg/mm/aaaa":

datetime = tempo | Data-opt-tempo
time = time-elemento 'T' [Offset]
data-opt-time = Data-elemento [ 'T' [time-elemento] [Offset]]
data-STD-elemento = data-elemento | ord-date-element | week-Data-elemento
STD-date-elemento = yyyy [ '-' MM [ '-' dd]]
ord-date-elemento = yyyy [ '-' DDD]
week-Data-elemento = xxxx '-W' ww ['-' e]
elemento temporale = HH [elemento minuto] | [frazione]
minuto-elemento = ':' mm [secondo elemento] | [frazione] second-element = ':' ss [frazione]
fraction = ('.' | ',') digit +
offset = 'Z' | (('+' | '-') HH [ '' '::' mm [ '' ss [(| '') SSS]]])

È possibile analizzare un formato diverso con un DateTimeFormatter (nota MM in maiuscolo per mese):

DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy"); 
DateTime expireDate = fmt.parseDateTime(renewDate); 
2

è necessario analizzare la data utilizzando il metodo statico parse come il costruttore assume la stringa è nel formato ISO

il formato della data che serve è come sotto

DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy"); 
DateTime expireDate = DateTime.parse(renewDate, fmt);