web-dev-qa-db-fra.com

java.text.ParseException: date imparable: "2014-06-04" (au décalage 5)

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.

10
Anchit Mittal

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);
17
Jens
// 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 "";
       }
}
7
Haresh Chhelana

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;
}
3
Abs

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 !!

0
AndroidGuy