2012-08-28 8 views
15

Lo stile del formattatore nel metodo parse della classe DateTime deve corrispondere allo stile esatto della stringa? Ad esempio, ricevo un oggetto TimeStamp dal database (Oracle) e lo converto in una stringa. Nel database del timestamp è conservato come questoInformazioni su JodaTime DateTime.parse (stringa, formattatore)

08-ago-12 12.00.00.000000000 AM

ho impostato la mia formattatore a questo stile

String pattern = "dd-MMM-yy"; 

ottengo questa eccezione

java.lang.IllegalArgumentException: Invalid format: "08-AUG-12 12.00.00 AM" is malformed at " 12.00.00 AM" 

org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:866) 

org.joda.time.DateTime.parse(DateTime.java:144) 

Che cosa significa esattamente e come dovrei risolvere? Quando ho impostato il mio formattatore di "yy-MMM-dd hh.mm.ss aa" non ottengo un'eccezione, ma le stampe nel browser in questo modo: 2008-08-12T00:00:00.000-04:00, ma ho bisogno per poter stampare come "dd-MMM-yy hh:mm:ss aa"

risposta

40

Uso LocalDateTime invece:

String input = "08-AUG-12 12.00.00 AM"; 
String pattern = "dd-MMM-yy hh.mm.ss aa"; 

LocalDateTime localDateTime = LocalDateTime.parse(input, DateTimeFormat.forPattern(pattern)); 

EDIT

è un dato di fatto che si può fare con DateTime anche:

private static String parseDateTime(String input){ 
    String pattern = "dd-MMM-yy hh.mm.ss aa"; 
    DateTime dateTime = DateTime.parse(input, DateTimeFormat.forPattern(pattern)); 
    return dateTime.toString("dd-MMM-yy hh:mm:ss aa"); 
} 
+0

quando uso 'localDateTime.toString();' stampa ancora come ho indicato nel messaggio originale. – Robert

+0

@Robert troppo tardi per il commento immagino :) l'hai risolto da solo. – Eugene

+0

TYhanks per la direzione – Robert

2

Capito. Per ottenere il formato corretto, devi chiamare formatter.print (oggetto localDateTime) e ha funzionato.

+2

è anche possibile specificare il modello da utilizzare in toString .. localDateTime.toString ("gg-MMM-aa hh: mm: ss aa"); – Eugene

+0

Ancora meglio :-) – Robert