2016-04-05 8 views
1

Im Versuch, Datum vom Typ 2016 23-May-2016 und 24-May zum Beispiel zu analysieren ..ein Datum zu analysieren versuchen, wirft Parserfehler

Code Nach zeigen, wie das Datum im Parsen.

SimpleDateFormat format1 = new SimpleDateFormat("dd-MM-yyyy"); 
      Date validityDate = null; 
      Date nextDueDate = null; 
      try { 
       validityDate = format1.parse(mValidityDate.getText().toString()); 
       nextDueDate = format1.parse(mNextDueDate.getText().toString()); 
       int validate = validate(validityDate, nextDueDate); 
      } catch (Exception ex) { 
       Toast.makeText(getApplicationContext(),ex.toString(),Toast.LENGTH_SHORT).show(); 
      } 

Folgendes ist der Code, der die Anzahl der Unterschiede zwischen zwei Daten findet.

public static int validate(Date valid, Date nextDueDate) { 
     return (int) ((nextDueDate.getTime() - valid.getTime())/(1000 * 60 * 60 * 24l)); 
    } 

Das Problem ist, dass ich Datum Parser Fehler bei Offset 3. Warum ist das so?

Antwort

1

Sie benötigen zwei verwenden, um verschiedene SimpleDateFormat

Für Datum 23-May-2016 Sie brauchen new SimpleDateFormat("dd-MMM-yyyy");

Für Datum 24-May 2016 Sie new SimpleDateFormat("dd-MMM yyyy");

1

müssen Sie verwenden die Muster "dd-MM-yyyy" was bedeutet, dass Sie versuchen, ein Datum des Formulars zu analysieren 12-05-2016.

Wenn Sie ein Datum wie "12-May-2016" analysieren müssen, müssen Sie 3M Buchstaben für den Monat wie folgt verwenden. "dd-MMM-yyyy". Dies wird jedoch "12-Jun-2016" ausgeben, wenn Sie das Datum "12-06-2016" analysieren.

Wenn Sie den ganzen Monat benötigen, sollten Sie 4M Buchstaben verwenden. Beispiel: "dd-MMMM-yyyy". Dann wird 12-June-2016 ausgegeben.