Le style du formateur dans la méthode parse de la classe DateTime doit-il correspondre au style exact de la chaîne? Par exemple, j'obtiens un objet TimeStamp de la base de données (Oracle) et le convertis en chaîne. Dans la base de données, le TimeStamp est stocké comme ceci
08-AUG-12 12.00.00.000000000 AM
J'ai réglé mon formateur sur ce style
String pattern = "dd-MMM-yy";
Je reçois cette exception
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)
Qu'est-ce que cela signifie exactement et comment pourrais-je y remédier? Lorsque je règle mon formateur sur "yy-MMM-dd hh.mm.ss aa"
Je ne reçois pas d'exception mais il s'affiche dans le navigateur comme ceci: 2008-08-12T00:00:00.000-04:00
, mais je dois l'imprimer en tant que "dd-MMM-yy hh:mm:ss aa"
Utilisez plutôt LocalDateTime:
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));
MODIFIER
En fait, vous pouvez aussi le faire avec DateTime:
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");
}
Deviner. Pour obtenir le format correct, vous devez appeler formatter.print (objet localDateTime) et cela a fonctionné.