edifact/eancom DTM to timestamp parsing(format a, value b, part c, [time zone d, locale e, exception handling f, force empty g])

Prev Next

Liest das im Wert b eines EDIFACT- oder EANCOM-DTM-Segments kodierte Datum mit Uhrzeit aus und gibt es als Zeitstempel zurück. Der DTM-Formatcode a (Datenelement 2379) legt fest, wie der Wert b interpretiert wird.

Beispiel: In DTM+137:20240302:102' ist der Wert 20240302 und der Formatcode 102.

Bei der Verarbeitung gelten folgende Regeln:

  • Formatcodes, die einen Zeitraum beschreiben (z. B. 718), enthalten zwei Datumsangaben. Der Parameter c wählt den zurückgegebenen Teil. Bei allen anderen Formatcodes hat c keine Wirkung.

  • Die Zeitzone d wird nur für Werte verwendet, die selbst keine Zeitzone enthalten. Enthält der Formatcode eine Zeitzone (z. B. 205, 304, 406), wird die im Wert enthaltene Zeitzone verwendet und d ignoriert.

  • Die Locale e betrifft nur Formatcodes, die auf Kalenderwochen beruhen (103, 104, 615, 616, 715, 716). Ohne Locale gelten die EDIFACT-Regeln: Die Woche beginnt am Montag, und Woche 1 ist die Woche, die den 1. Januar enthält. Mit einer Locale gelten deren Wochenregeln (für de_DE die ISO-8601-Regeln, bei denen Woche 1 die erste Woche mit mindestens vier Tagen im neuen Jahr ist).

  • Zweistellige Jahresangaben (YY) werden dem Jahrhundert zugeordnet, das im Bereich von 80 Jahren vor bis 20 Jahren nach dem aktuellen Datum liegt. Im Jahr 2026 bedeutet 99 also 1999 und 12 das Jahr 2012.

  • Das Vorzeichen der Zeitzone kann im Wert als + oder - geschrieben werden oder, wie in EDIFACT üblich, als P (Plus) und M (Minus).

  • Führende und nachfolgende Leerzeichen in Formatcode a und Wert b werden entfernt; die Groß-/Kleinschreibung spielt keine Rolle.

Parameter

Parameter

Beschreibung

a

DTM-Formatcode (Datenelement 2379), z. B. 102, 203, 718. Siehe Abschnitt Formatcodes.

b

Der zu verarbeitende Wert aus dem DTM-Segment.

c

(optional) Teil eines Zeitraums, der zurückgegeben wird. from, 1, true oder leer liefern den Anfang, until, 2 oder false das Ende. Nur relevant für Formatcodes, die einen Zeitraum beschreiben. Default: from

d

(optional) Zeitzone für Werte, die keine eigene Zeitzone enthalten. Zulässig sind Zeitzonen-IDs wie Europe/Berlin, America/New_York, UTC oder GMT+03:30, ein EDIFACT-Offset wie +0330, P0330, -0330, M0330, +03 oder M03, der Wert SYSTEM (Zeitzone des Servers) oder ein Datums-/Zeitstempelfeld, dessen Zeitzone dann verwendet wird. Mehrdeutige Abkürzungen wie CET sollten vermieden werden. Default: Zeitzone des Servers

e

(optional) Locale für die Regeln der Kalenderwoche, z. B. de_DE oder en_US. Ohne Angabe gelten die EDIFACT-Wochenregeln (Woche beginnt am Montag, Woche 1 enthält den 1. Januar). Default: EDIFACT-Regeln

f

(optional) Fehlerbehandlung, wenn b nicht mit dem Formatcode a verarbeitet werden kann.

  • error – Abbruch mit Fehlermeldung.

  • empty – Das Ergebnis ist ein leerer Zeitstempel mit gesetztem Empty Flag.

  • now – Das Ergebnis ist das aktuelle Datum mit Uhrzeit.

Default: error

g

(optional) Erzwingt einen leeren Wert. Bei true gibt die Funktion sofort einen leeren Wert mit gesetztem Empty Flag zurück, ohne b zu verarbeiten – z. B. wenn das Quellfeld leer ist. Default: false

Formatcodes

Unterstützt werden Formatcodes für Kalenderdaten, Datum mit Uhrzeit (auch mit Zeitzone), reine Uhrzeiten und Zeiträume. Nicht im Wert enthaltene Bestandteile werden auf ihren niedrigsten Wert gesetzt: eine fehlende Uhrzeit auf 00:00:00, ein fehlender Tag auf den ersten Tag des Zeitraums, ein fehlendes Jahr auf 1970.

Formatcodes, die keine Datums- oder Zeitangabe, sondern eine Zahl darstellen (107–110 sowie 801–814), werden zurückgewiesen. Für diese Formatcodes ist die Funktion edifact/eancom DTM to number parsing vorgesehen.

Die vollständige Definition aller Formatcodes finden Sie in der Codeliste des UN/CEFACT-Datenelements 2379: UN/CEFACT UNCL 2379.

EANCOM definiert zusätzlich die folgenden Codes, die nicht in der UN-Codeliste enthalten sind:

Code

Wert

Ergebnis

20E

CCYYMMDDHHMMCCYYMMDDHHMM

Datum und Uhrzeit, wie 719

21E

DDHHMMDDHHMM

Tag und Uhrzeit, im Januar 1970

22E

DHHMMDHHMM

Wochentag und Uhrzeit, wie 720

Beispiele

Die Zeitzone des Servers ist in den Beispielen Europe/Berlin. Die Zeitzone des Ergebnisses steht in Klammern. Die Parameter f und g sind leer, sofern nicht anders angegeben.

Parameter a

Parameter b

Parameter c

Parameter d

Parameter e

Ergebnis

2

120215

UTC

2015-02-12 00:00:00.0 (UTC)

6

2015021

2015-02-01 00:00:00.0 (Europe/Berlin)

6

2015022

2015-02-15 00:00:00.0 (Europe/Berlin)

7

2024031

2024-02-26 00:00:00.0 (Europe/Berlin), Montag der Woche, die den 1. März enthält

7

2024032

2024-03-04 00:00:00.0 (Europe/Berlin)

10

20030201T1234

2003-02-01 12:34:00.0 (Europe/Berlin)

102

20240301

2024-03-01 00:00:00.0 (Europe/Berlin)

103

21023

2021-01-06 00:00:00.0 (Europe/Berlin), EDIFACT-Wochenregeln

103

21023

de_DE

2021-01-13 00:00:00.0 (Europe/Berlin), ISO-Wochenregeln

105

24366

2024-12-31 00:00:00.0 (Europe/Berlin)

203

202403021345

2024-03-02 13:45:00.0 (Europe/Berlin)

204

20010203123456

UTC

2001-02-03 12:34:56.0 (UTC)

205

202403021345+0300

2024-03-02 13:45:00.0 (GMT+03:00)

205

202403021345P0300

2024-03-02 13:45:00.0 (GMT+03:00)

205

202403310230M0300

UTC

2024-03-31 02:30:00.0 (GMT-03:00), d wird ignoriert

301

0102031234+03

2001-02-03 12:34:00.0 (GMT+03:00)

307

20010203123456123

2001-02-03 12:34:56.123 (Europe/Berlin)

401

1234

1970-01-01 12:34:00.0 (Europe/Berlin)

405

123456

1970-01-01 20:34:56.0 (Europe/Berlin)

406

+0330

1970-01-01 00:00:00.0 (GMT+03:30)

501

12342345

until

1970-01-01 23:45:00.0 (Europe/Berlin)

608

20123

2012-07-01 00:00:00.0 (Europe/Berlin)

613

21023

2021-02-21 00:00:00.0 (Europe/Berlin)

615

2102

2021-01-04 00:00:00.0 (Europe/Berlin), EDIFACT-Wochenregeln

615

2102

de_DE

2021-01-11 00:00:00.0 (Europe/Berlin), ISO-Wochenregeln

718

2001020319040506

from

2001-02-03 00:00:00.0 (Europe/Berlin)

718

2001020319040506

until

1904-05-06 00:00:00.0 (Europe/Berlin)

719

202403021345190102032343

1

2024-03-02 13:45:00.0 (Europe/Berlin)

719

202403021345190102032343

2

1901-02-03 23:43:00.0 (Europe/Berlin)

720

1234520123

from

1970-01-05 23:45:00.0 (Europe/Berlin), Montag

720

1234520123

until

1970-01-06 01:23:00.0 (Europe/Berlin), Dienstag

Fehlerbehandlung

Parameter a

Parameter b

Parameter d

Parameter f

Parameter g

Ergebnis

7

2027025

Abbruch mit Fehler invalid week value for '2027025' with format code '7': 5 (Februar 2027 hat nur vier Wochen).

102

20031301

Abbruch mit Fehler unable to parse '20031301' with format code '102' (Monat 13).

102

ABC

now

Aktuelles Datum mit Uhrzeit.

102

true

Leerer Wert, b wird nicht verarbeitet.

203

202403310230

Abbruch mit Fehler, da es 02:30 am 31. März 2024 in Europe/Berlin nicht gibt (Umstellung auf Sommerzeit).

203

202403310230

UTC

2024-03-31 02:30:00.0 (UTC)

801

12

Abbruch mit Fehler unable to parse '12' with format code '801', da der Code eine Zahl darstellt.

801

12

empty

Leerer Zeitstempel mit gesetztem Empty Flag.