web-dev-qa-db-fra.com

java.text.ParseException: date imparsible

Je suis en train d'exécuter une exception pendant que j'essaie de suivre le code

    String date="Sat Jun 01 12:53:10 IST 2013";
    SimpleDateFormat sdf=new SimpleDateFormat("MMM d, yyyy HH:mm:ss");
    Date currentdate;
    currentdate=sdf.parse(date);
    System.out.println(currentdate);

Exception 

Exception in thread "main" Java.text.ParseException: Unparseable date: "Sat Jun 01 12:53:10 IST 2013"
at com.ibm.icu.text.DateFormat.parse(DateFormat.Java:510)

entrée: Sat Jun 01 12:53:10 IST 2013

Résultat attendu: Jun 01,2013 12:53:10

Comment résoudre ceci?

40
Ami

Votre modèle ne correspond pas du tout à la chaîne d'entrée ... Il n'est pas étonnant que cela ne fonctionne pas. Cela fonctionnerait probablement mieux:

SimpleDateFormat sdf = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy",
                                            Locale.ENGLISH);

Ensuite, pour imprimer avec le format requis, vous avez besoin d'un deuxième SimpleDateFormat:

Date parsedDate = sdf.parse(date);
SimpleDateFormat print = new SimpleDateFormat("MMM d, yyyy HH:mm:ss");
System.out.println(print.format(parsedDate));

Remarques:

  • vous devez inclure les paramètres régionaux, car si ceux-ci ne sont pas anglais, le nom du jour peut ne pas être reconnu
  • IST est ambigu et peut entraîner des problèmes vous devez donc utiliser le nom de fuseau horaire approprié si possible dans votre entrée.
90
assylias
        String date="Sat Jun 01 12:53:10 IST 2013";
        SimpleDateFormat sdf=new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy");
        Date currentdate=sdf.parse(date);
        SimpleDateFormat sdf2=new SimpleDateFormat("MMM dd,yyyy HH:mm:ss");
        System.out.println(sdf2.format(currentdate));

Le motif est faux 

    String date="Sat Jun 01 12:53:10 IST 2013";
    SimpleDateFormat sdf=new SimpleDateFormat("E MMM dd hh:mm:ss Z yyyy");
    Date currentdate;
    currentdate=sdf.parse(date);
    System.out.println(currentdate);
3
Suresh Atta

J'ai trouvé une solution simple pour obtenir la date actuelle sans erreur d'analyse.

Calendar calendar;
calendar = Calendar.getInstance();
String customDate = "" + calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH);
1
Anand Savjani

Mettez à jour votre format pour:

SimpleDateFormat sdf=new SimpleDateFormat("E MMM dd hh:mm:ss Z yyyy");
1
Juned Ahsan
String date="Sat Jun 01 12:53:10 IST 2013";

SimpleDateFormat sdf=new SimpleDateFormat("MMM d, yyyy HH:mm:ss");

Ce modèle ne correspond pas à votre chaîne d'entrée qui se produit le exception.

Vous devez utiliser le suivant pattern pour effectuer le travail.

E MMM dd HH:mm:ss z yyyy

Le code suivant vous aidera à sauter l’exception.

SimpleDateFormat est used.

    String date="Sat Jun 01 12:53:10 IST 2013"; // Input String

    SimpleDateFormat simpleDateFormat=new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy"); // Existing Pattern

    Date currentdate=simpleDateFormat.parse(date); // Returns Date Format,

    SimpleDateFormat simpleDateFormat1=new SimpleDateFormat("MMM dd,yyyy HH:mm:ss"); // New Pattern

    System.out.println(simpleDateFormat1.format(currentdate)); // Format given String to new pattern

    // outputs: Jun 01,2013 12:53:10
0
Dulith De Costa