Datumsformat 102 muss dem Muster YYYYMMDD entsprechen

Fehler CII-DT-097 Syntax (UBL/CII)

Die Datums-/Zeitangabe mit dem Formatattribut 102 muss YYYYMMDD sein.

Pflichtregel: Solange sie verletzt ist, ist die Rechnung ungültig und wird von Validatoren abgewiesen.
Was nicht stimmt

Der Inhalt von udt:DateTimeString mit format 102 entspricht nicht dem erwarteten Muster: vier Jahresziffern, ein Monat von 01 bis 12 und ein Tag von 01 bis 31. Der Test erlaubt außerdem Leerraum vor und nach dem Datum.

Was die Regel bedeutet

Das Format 102 stellt ein Datum in der Reihenfolge Jahr, Monat, Tag dar. Das feste Muster ermöglicht die einheitliche Übermittlung des Datumswerts.

Bitte schreiben Sie das Datum im Format YYYYMMDD

Ein Datum in udt:DateTimeString mit format 102 entspricht nicht dem erwarteten Muster. Mit vier Jahresziffern, anschließendem Monat und Tag lässt sich die Angabe an das Format anpassen.

Was ist zu tun?
  1. Suchen Sie das betroffene udt:DateTimeString-Element mit format 102.
  2. Geben Sie den Wert mit vier Jahresziffern, zweistelligem Monat und zweistelligem Tag an.
  3. Erzeugen Sie die Rechnung neu und prüfen Sie sie erneut.
So sieht es aus
✗ Führt zur Meldung
<udt:DateTimeString format="102">2024-10-03</udt:DateTimeString>
✓ In Ordnung
<udt:DateTimeString format="102">20241003</udt:DateTimeString>
Technische Details

Der reguläre Ausdruck prüft die Zeichenfolge auf acht Ziffern in der Reihenfolge YYYYMMDD; Monat und Tag werden auf die Bereiche 01–12 und 01–31 begrenzt. Eine vollständige Prüfung der Gültigkeit des Kalenderdatums ist im Test nicht enthalten.

Wo die Regel greift

Die Regel gilt für jedes udt:DateTimeString-Element mit dem Attribut format gleich 102.

Originalmeldung aus dem Schematron
Date time string with format attribute 102 shall be YYYYMMDD.
Kontext (rule/@context)
//udt:DateTimeString[@format = '102']
Prüfausdruck (assert/@test)
matches(.,'^\s*(\d{4})(1[0-2]|0[1-9]){1}(3[01]|[12][0-9]|0[1-9]){1}\s*$')