en Java, comment analyser une chaîne de date contenant une lettre qui ne représente pas un motif?
"2007-11-02T14: 46: 03 + 01: 00"
String date = "2007-11-02T14: 46: 03 + 01: 00"; String format = "aaaa-MM-jjTHH: mm: ssz"; Nouveau SimpleDateFormat (format) .parse (date); Exception dans le fil "principal" Java.lang.IllegalArgumentException: caractère de modèle illégal 'T' à Java.text.SimpleDateFormat.compile (SimpleDateFormat.Java:769) à Java.text.SimpleDateFormat.initialize (SimpleDateFormat.Java:576) à Java.text.SimpleDateFormat. (SimpleDateFormat.Java:501) à Java.text.SimpleDateFormat. (SimpleDateFormat.Java:476)
Le temps que vous essayez d'analyser semble être au format format ISO 8601 . SimpleDateFormat
ne supporte malheureusement pas tous les mêmes spécificateurs de fuseau horaire que l'ISO 8601. Si vous voulez pouvoir gérer correctement tous les formulaires spécifiés dans l'ISO, la meilleure chose à faire est d'utiliser Joda time .
Cet exemple est tout droit sorti du guide de l'utilisateur :
DateTime dt = new DateTime("2004-12-13T21:39:45.618-08:00");
Tu peux essayer
String format = "yyyy-MM-dd'T'HH:mm:ssz";
Référence: from Javadoc
Le texte peut être cité en utilisant des guillemets simples (') pour éviter toute interprétation.
Si vous ne vous souciez pas du fuseau horaire, vous pouvez utiliser cette méthode.
public static Date convertToDate(String strDate) throws ParseException {
Date date = null;
if (strDate != null) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
date = sdf.parse(strDate);
}
return date;
}
Je ne sais pas si cela vous est toujours utile, mais je rencontre maintenant le même problème et, un peu plus tard, je le présente.
String testDate = "2007-11-02T14:46:03+01:00";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz");
Date date = formatter.parse(testDate);
System.out.println(date);
Vous pouvez essayer similaire à ce qui précède
Vous pouvez utiliser le lien suivant link pour référence