Ungültiges Musterzeichen „T“ beim Parsen einer Datumszeichenfolge in java.util.Date
Parsen einer Datumszeichenfolge in eine java.util. Das Datumsobjekt erfordert ein Muster, das bestimmte Regeln einhält. Ein häufiges Muster ist „yyyy-MM-ddThh:mm:ssZ“, das Datumsangaben im ISO 8601-Format darstellt.
Problem:
Bei Verwendung des angegebenen Musters tritt eine Ausnahme auf wird mit der Meldung „java.lang.IllegalArgumentException: Unzulässiges Musterzeichen“ ausgelöst 'T'."
Grund:
Das 'T' im Muster stellt ein Trennzeichen zwischen den Datums- und Uhrzeitkomponenten dar. Im SimpleDateFormat von Java muss das „T“-Zeichen jedoch mit einfachen Anführungszeichen auf beiden Seiten maskiert werden, um korrekt erkannt zu werden.
Lösung 1: „T“ in Muster maskieren
Um das Problem mit dem ursprünglichen Muster zu beheben, maskieren Sie das „T“-Zeichen wie folgt:
String pattern = "yyyy-MM-dd'T'hh:mm:ssZ";
Lösung 2: Verwenden Sie ISO_8601_24H_FULL_FORMAT
Alternativ können Sie die vordefinierte ISO_8601_24H_FULL_FORMAT-Konstante verwenden, die von bereitgestellt wird Q2597083 class:
String pattern = Q2597083.ISO_8601_24H_FULL_FORMAT;
Für Java 8 und höher:
Für Java 8 und höher wird die Verwendung der DateTimeFormatter-Klasse empfohlen statt SimpleDateFormat und Instant statt Date. Hier ist ein Beispiel:
import java.time.Instant; import java.time.format.DateTimeFormatter; String dateString = "2010-10-02T12:23:23Z"; DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; Instant d = Instant.parse(dateString); System.out.println(d.getYear());
Mit diesen Lösungen können Sie Datumszeichenfolgen im ISO 8601-Format erfolgreich analysieren, ohne dass die Ausnahme „Ungültiges Musterzeichen ‚T‘“ auftritt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3