Je souhaite analyser la date dans le format souhaité, mais je reçois une exception à chaque fois. Je sais qu’il est facile à mettre en œuvre, mais j’ai un problème à résoudre. Je ne sais pas où exactement.
Exception: Java.text.ParseException: Unparseable date: "2014-06-04" (at offset 5)
Voici mon code:
private String getconvertdate(String date) {
DateFormat inputFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss",Locale.ENGLISH);
inputFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
DateFormat outputFormat = new SimpleDateFormat("dd-MMM-yyyy",Locale.ENGLISH);
Date parsed = null;
try {
parsed = inputFormat.parse(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String outputText = outputFormat.format(parsed);
return outputText;
}
Entrée dans la méthode: 2014-06-04
Résultats attendus: 06-Jun-2014
J'ai suivi des réf. de Stackoverflow.com, mais le problème persiste toujours. Aide s'il vous plaît.
Vous n'avez pas de temps dans votre chaîne: Et le mois n'a que deux caractères Remplacer
new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss",Locale.ENGLISH);
avec
new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);
// Try this way,hope this will help you to solve your problem....
public String convertDateStringFormat(String strDate, String fromFormat, String toFormat){
try{
SimpleDateFormat sdf = new SimpleDateFormat(fromFormat);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
SimpleDateFormat dateFormat2 = new SimpleDateFormat(toFormat.trim());
return dateFormat2.format(sdf.parse(strDate));
}catch (Exception e) {
e.printStackTrace();
return "";
}
}
Peut-être devriez-vous vous attaquer à différents formats d'entrée Puis attrapez l'exception de format actuellement non géré (juste un exemple):
private String getconvertdate(String date) {
System.out.println(date.length());
DateFormat inputFormat = null;
if(date.length() == 20)
inputFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss",Locale.ENGLISH);
if(date.length() == 10)
inputFormat = new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH) ;
if(null == inputFormat)
return "Format invalid";
inputFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
DateFormat outputFormat = new SimpleDateFormat("dd-MMM-yyyy",Locale.ENGLISH);
Date parsed = null;
try {
parsed = inputFormat.parse(date);
} catch (ParseException e) {
return "Input Date invalid";
}
String outputText = outputFormat.format(parsed);
return outputText;
}
Dans mon cas, j'utilisais ::
SimpleDateFormat todaySdf = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH);
changé pour
SimpleDateFormat todaySdf = new SimpleDateFormat("dd MM yyyy", Locale.ENGLISH);
et cela a fonctionné .. le M supplémentaire était le coupable !!