2016-05-05 3 views
4
public static boolean checkTimeFormat(String str){ 

    try { 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     sdf.parse(str); 
     return true; 
    } catch (ParseException ex) { 
     System.out.println("not a valid time:"+str); 
     //ex.printStackTrace(); 
    } 

return false; 
} 

Ich habe diese Methode zu prüfen, ob str im richtigen Format ich es gegenSimpledataformat Anerkennung nicht gültige Zeichenfolge

getestet
2015–01-01 07:01:14 

und es sagt, keine gültige Zeit. Ich bin verwirrt, da sie im selben Format sind.

Antwort

7

Ihre Beispielzeichenfolge hat das falsche Zeichen für den ersten Bindestrich. Es ist ein EN-DASH, alias Unicode Codepunkt U + 2013. Ersetzen Sie es mit einem normalen Bindestrich (U + 002D) wird korrekt funktionieren.