2016-05-09 5 views
0

Derzeit versuche ich eine DateTime mit Jodatime-Bibliothek zu analysieren.jodatime -> Parse Fehler utc Datetime String

String stringLiteral = "09/05/2016 12:25:39" 
try { 
    DateTime utcDateTime = new DateTime(stringLiteral, DateTimeZone.UTC); 
    this.expressionType = ExpressionEnumType.date; 
    this.expressions.add(ConstantImpl.create(utcDateTime.toDate())); 
} catch (IllegalArgumentException e) 
{ 
    this.expressionType = ExpressionEnumType.string; 
    this.expressions.add(ConstantImpl.create(stringLiteral)); 
} 

jedoch jodatime sagt mir:

java.lang.IllegalArgumentException: Ungültige Format: "2016.09.05 12.25.39" auf „/ 05/2016 12 fehlerhaft ist: 25:39"

Antwort

1

der Konstruktor von DateTime kann nicht eine Zeichenfolge in einem beliebigen Format in ein DateTime Objekt analysiert. Wenn Sie den Konstruktor auf diese Weise verwenden möchten, muss die Zeichenfolge in einem der ISO 8601-Formate vorliegen, und Ihre Zeichenfolge "09/05/2016 12:25:39" ist nicht.

Verwenden Sie eine andere Methode, um das Datum zu analysieren, wobei Sie das Format selbst angeben können. Zum Beispiel:

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss") 
              .withZoneUTC(); 

DateTime utcDateTime = DateTime.parse(stringLiteral, formatter); 
+0

Wie lautet das Standardzeichenfolgenformat? – Jordi

+0

@Jordi Die [API-Dokumentation] (http://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html#DateTime-java.lang.Object-org.joda.time.DateTimeZone -) sag: schau dir ['ISODateTimeFormat.dateTimeParser()'] an (http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTimeParser--). Es sollte eine Zeichenfolge im Format [ISO 8601] (https://en.wikipedia.org/wiki/ISO_8601) sein. Zum Beispiel: '2016-05-09T12: 25: 39' – Jesper