Ich verwendete yyyy-MM-dd'T'HH:mm:ss.SSSXXX
Formatzeichenfolge mit icu :: SimpleDateFormat.Parse ein ISO 8601 Datum-Uhrzeit mit optionalen Sekundenbruchteil mit ICU
Obwohl es für Datum-Uhrzeit-Zeichenfolgen mit Nachkommastellen funktioniert. Beispiele:
2016-03-31T15: 04: 32.049Z
2016-03-31T15: 04: 32.05Z
2016-03-31T15: 04: 32.3Z
Es analysiert keine Strings ohne Bruchteile von Sekunden (z. B. 2016-03-31T15:08:51Z
) und gibt einen Fehlercode U_ILLEGAL_ARGUMENT_ERROR zurück.
Ich habe versucht, einige andere Formatkombinationen vergebens: einige fehlschlagen mit einem Fehlercode, andere ignorieren Millisekunden.
Unterstützt die ICU sogar das Parsen einer optionalen Sekundenbruchteile?
Dieses [freie Open-Source, header-only C++ 11/14/17-Bibliothek] (https: //howardhinnant.github .io/date/date.html) wird dies mit dem Syntaxstring '"% FT% TZ "' tun. Parsen Sie einfach in einen 'std :: chrono :: system_clock :: time_point'. –
Ich erwarte, dass die endgültige Lösung mit mehreren Parsern zu parsen versuchen wird ... zuerst mit einem, der Sekunden spezifiziert, und dann ohne. Allerdings habe ich den U_ILLEGAL_ARGUMENT_ERROR bekommen, als ich das auch versucht habe, also bin ich mir auch nicht sicher, was ich falsch mache. Ich erwarte, dass die Probleme ähnlich sind, also gebe ich ein Kopfgeld darauf. Die von mir verwendeten Formate stammen von https://www.w3.org/TR/NOTE-datetime – markt1964