2016-12-17 4 views
0

Ich versuche, diese Datetime zu analysieren:Wie analysieren threeten Datetime

DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder() 
        .appendPattern("dd/MM/yyyy hh:mm:ss") 
        .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0) 
        .parseDefaulting(ChronoField.MILLI_OF_SECOND, 0) 
        .toFormatter(); 

      String ultimaAtualizacaoTexto = "17/12/2016 01:41:43"; 

      LocalDateTime ultimaAtualizacaoDateTime = 
        LocalDateTime.parse(ultimaAtualizacaoTexto, dateTimeFormatter); 

Aber ich bin immer diese Fehlermeldung:

DateTimeParseException: Text '17/12/2016 01:41:43' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: DateTimeBuilder[fields={MilliOfSecond=0, MinuteOfHour=41, MicroOfSecond=0, NanoOfSecond=0, HourOfAmPm=1, SecondOfMinute=43}, ISO, null, 2016-12-17, null], type org.threeten.bp.format.DateTimeBuilder 

Ich bin nicht sicher, was los ist ... Es sollte total arbeiten!

Irgendwelche Hilfe dabei? Danke trotzdem!

Antwort

1

So ... Ich hatte zu ändern "dd/MM/JJJJ hh: mm: ss" bis "TT/MM/JJJJ HH: mm: ss"

Da hh nur für 12 am/pm ist Std. HH ist für 24 Stunden.

+0

Dies ist ein sehr häufiger Fehler. Es gibt Tonnen von SO-Posts, die diesen Fehler enthalten. Und es ist nicht spezifisch für Threeten oder Java-8, sondern auch üblich in 'SimpleDateFormat' und' Joda-Time'. Manche Leute bemerken nicht einmal Probleme, wenn sie "h" ohne am/pm-Marker in der Formatierung verwenden (effektives Drucken falscher Daten), glauben aber fälschlicherweise, dass alles in Ordnung ist. Dies hat mich inspiriert, einige [Muster-Plausibilitätsprüfungen] (https://github.com/MenoData/Time4J/issues/565) in meine eigene Zeitbibliothek zu integrieren. Auch andere Bibliotheken könnten von einer solchen Überprüfung profitieren. –

Verwandte Themen