2017-01-02 2 views
0

2017-01-02T01:41:24Z ist mein aktuelles Datumsformat und ich möchte dieses Datum in yyyy-MM-dd hh:mma Format konvertieren.Unrated Datum: "2017-01-02T01: 41: 24Z" (bei Offset 10)

Bitte lesen Sie den folgenden Code, den ich bisher versucht,

String newsDate = "2017-01-02T01:41:24Z"; 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mma"); 
     Date date = null; 
     try 
     { 
      date = sdf.parse(newsDate); 
     } 
     catch (ParseException e) 
     { 
      e.printStackTrace(); 
     } 

aber date = sdf.parse(newsDate); Linie Ich erhalte den folgenden Fehler:

"Unparseable date: "2017-01-02T01:41:24Z" (at offset 10)".

Bitte leite mich, wo könnte ich falsch gegangen ?

Antwort

2

Weil Sie ein anderes Datumsformat verwenden, das nicht korrekt ist.

Ändern Sie diese

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mma"); 

dieser

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
+0

Immer noch falsch, siehe meine Antwort. –

1

Try this:

String newsDate = "2017-01-02T01:41:24Z";  
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mma"); 

    try { 
     texview.setText(sdf1.format(sdf.parse(newsDate))); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
      System.out.println("bad pattern"); 
     } 
0

Die anderen Antworten falsch sind mit Bezug auf die Zeitzone/Offset - Interpretation. Das nachgestellte "Z" steht für UTC + 00: 00 und darf nicht nur als Literal interpretiert werden. Die documentation of Android definiert das geeignete Mustersymbol X, das mit dieser Art von Eingabe umgehen kann. Wenn Sie sich nicht um dieses Detail kümmern, erhalten Sie keine Ausnahme, sondern falsche Daten (was noch schlimmer ist).

So ist die endgültige Lösung, die das Update für den einstündigen Teil wie folgt aussieht:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); 

Hinweis: Verwenden Sie XX statt XXX, wenn Sie Offsets ohne Doppelpunkt haben.

1

Das funktioniert perfekt für mich.

String newsDate = "2017-01-02T01:41:24Z";  
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mma"); 

try { 
    texview.setText(sdf1.format(sdf.parse(newsDate))); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
     System.out.println("bad pattern"); 
    } 
Verwandte Themen