2016-04-10 5 views
0

Ich habe diese 20160407 4:30 pm Daten Zeit Zeichenfolge und ich möchte es auf Timestamp übertragen.Java Nicht übertragbares Datum Ausnahme yyyyMMdd h: m a

Timestamp timestamp = null; 
try { 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd h:m a"); 
    //SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); 
    Date parsedDate = dateFormat.parse("20160407 4:30 pm"); 
    timestamp = new java.sql.Timestamp(parsedDate.getTime()); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

Ich habe Fehler:

java.text.ParseException: Unparseable date: "20160407 4:30 pm " 
+3

Funktioniert hier gut, mit Java 8. Was ist Ihr Gebietsschema? Vielleicht "pm" ist nicht wie du in deinem Locale "pm" sagst. Versuchen Sie es mit Locale.US anstelle Ihres Standardgebietsschemas. Veröffentlichen Sie außerdem die vollständige Stapelüberwachung der Ausnahme. –

+0

@JBNizet Stimmen Sie mit Ihnen überein. Sollte das lokale überprüfen. –

Antwort

4

ich in US momentan bin und Ihr Code läuft gut, wenn ich nicht ein Gebietsschema angeben. Die gleiche Ausnahme, die ausgelöst wurde, als ich mein Gebietsschema explizit in China änderte, wie in Chinesisch, verwenden wir "下午" für "pm" und "上午" für "am". Wenn Sie also "pm" in "下午" ändern, es wird dann funktionieren.

Locale locale = Locale.CHINA; 
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd h:m a", locale); 

Date parsedDate = dateFormat.parse("20160407 4:30 pm"); 

So überprüfen Sie bitte, was Ihr Standardgebietsschema von Locale locale = Locale.getDefault() ist.

Außerdem würde ich vorschlagen, dass Sie auch die neuere Java-API für Datum und Uhrzeit verwenden.

+0

Die Formatierungsklasse verwendet das von Ihnen angegebene Muster, auch wenn dies nicht der Standard für die Ländereinstellung ist. Ich sehe keinen Grund, dies zu bestätigen. – duffymo

+1

@duffymo Ja, es wird und dann in diesem Gebietsschema kann es fehlschlagen, deshalb gibt es einen Fehler. Sie können sich Folgendes ansehen: [Formate anpassen] (https://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html) –

+1

@duffymo Der Fehler ist beim Parsen aufgetreten, seit er versucht, eine Zeichenfolge zu analysieren als ein Datum, nicht zu formatieren ein "Date" -Objekt zu String –

Verwandte Themen