Verstehe Datum und Zeit in Model-Driven Apps

2025-03-18
Eine analoge Uhr

In vielen professionellen Anwendungsfällen werden Daten und Zeiten verarbeitet. Dataverse bietet verschiedene Möglichkeiten diese zu speichern und anzuzeigen, was häufig zu Verwirrungen führt. Wer am Anfang die Datentypen nicht richtig setzt, hat später evtl. Schwierigkeiten bei der Verarbeitung. Hier erfährst du wie die am besten mit Datums- und Zeitfeldern umgehst.

Datum und zeit verstehen

Dataverse bietet eine Reihe von Möglichkeiten Datums- und Zeit-Felder zu erstellen. Diese unterscheiden sich darin, welche Daten tatsächlich gespeichert werden, wie sie angezeigt werden und wie sie später verarbeitet werden können. Auch mir ist es in der Vergangenheit passiert, dass ich zwei Daten verarbeiten wollte, nur um festzustellen, dass die gespeicherten Daten es nicht zulassen, oder die Technik es mir, in der Form von Berechnete Spalten, gar verboten hat. Welche Möglichkeiten gibt es hier?

In Dataverse und Model-Driven Apps gibt es effektiv zwei Parameter für Datumsfelder: Format und Zeitzonenanpassung. Bei der Erstellung einer neuen Spalte gibt es auch noch den Datentyp, dieser lässt sich aber nicht unabhängig vom Format einstellen.

Das Format kennt zwei Einstellungen: „Datum und Uhrzeit“ und „Nur Datum“. Die Zeitzonenanpassung kennt bis zu drei Einstellungen: „Lokaler Benutzer“, „Zeitzonenunabhängig“ und „Nur Datum“. Letzteres ist nur verfügbar, wenn auch das Format auf „Nur Datum“ steht.

Format

Das Format bestimmt wie Datums- und Zeitfelder angezeigt werden bzw. was in Formularen eingegeben werden kann.

Dies betrifft aber nur die Anzeige bzw. die Eingabe. Die dahinterliegenden Daten werden als Zeitstempel mit Datum und Uhrzeit gespeichert. Da man in Model-Driven Apps bei Date only keine Uhrzeit eingeben kann wird hier die Zeit-Komponente auf 00:00 Uhr gesetzt.

Zeitzonenanpassung

Die Zeitzonenanpassung ist, was die meisten Entwickler verwirrt und wo die meisten Probleme auftauchen. Die Zeitzonenanpassung beschreibt, wie die gespeicherten Daten in unterschiedlichen Zeitzonen angezeigt werden. Dabei gibt es die folgenden Möglichkeiten:

Viele Möglichkeiten

Für sich genommen scheint das System nicht besonders kompliziert. Das Format bestimmt, was der Nutzer sieht. Die Zeitzonenanpassung bestimmt, ob die Information zeitzonenspezifisch angepasst wird. Allerdings gibt es somit fünf verschiedene Möglichkeiten Datums- und Zeit-Felder zu konfigurieren: Datetime-Format mit User local oder TZI, sowie Date only mit User local, TZI oder Date only Anpassung. Welche nimmt man nun in welchem Fall?

Im Prinzip gibt es nur drei Fälle, die für dich relevant sind: Date only, User local oder Time Zone Independent.

Format Eingabe (UTC+2) Dataverse Ausgabe (UTC-5)
Date only/TZI 2025-03-21 2025-03-21T00:00 2025-03-21
Datetime/TZI 2025-03-21T23:11 2025-03-21T23:11 2025-03-21T23:11
Datetime/Use local 2025-03-21T23:11 2025-03-21T21:11 2025-03-21T16:11

Eingabe und Ausgabe über Model-Driven App form.

Was ist mit den anderen Möglichkeiten?

Wenn du sowohl das Format, als auch die Zeitzonenanpassung auf Date only stellst, wir nur data Datum und keine Zeitinformation gespeichert. Dies kann durchaus sinnvoll sein, bietet aber in der Regel keinen Mehrwert gegenüber Date only Format mit TZI. Ein Nachteil ist aber, dass man in diesem Fall bei berechneten Spalten eingeschränkt ist. Denn man kann (bezogen auf die Zeitzonenanpassung) Date only Felder nicht mit TZI oder User local Feldern kombinieren.

Date only Format mit User local Zeitzonenanpassung solltest du unbedingt vermeiden. Hierbei wird nur das Datums-Feld angezeigt, es findet aber trotzdem im Hintergrund eine Zeitzonenanpassung statt. Wenn ich also in Deutschland bin und den 19.3.2025 eingebe, dann wird der 19.3.2025 00:00 Uhr übermittelt. Wegen der Zeitzonenberichtigung wird aber die entsprechende UTC-Zeit gespeichert, der 18.3.2025 23:00 Uhr. Mir fällt das nicht auf, da bei der Anzeige die Zeit wieder konvertiert wird. Für meine Kollegen in den USA wird aber der 18.3.2025 angezeigt werden. Diese Diskrepanz ist meistens nicht gewollt und führt zu Fehlinformationen.

Format Eingabe (UTC+2) Dataverse Ausgabe (UTC-5)
Date only/Date only 2025-03-21 2025-03-21 2025-03-21
Date only/User local 2025-03-21 2025-03-20T22:00 2025-03-20

Vermeide Date only mit User local zu kombinieren.

Power Automate

Bis jetzt bezog sich alles auf die Eingabe und Anzeige von Daten in Model-Driven Apps. In vielen Applikationen laufen aber Power Automate Flows im Hintergrund. Hierbei ist wichtig zu wissen, dass Power Automate bei der Speicherung die Zeitzonenanpassung nicht beachtet. Jede Eingabe wird so gespeichert wie sie übergeben wird, unabhängig von der Zeitzone des Nutzers, in dessen Context die Aktion läuft. Lediglich bei der formatierten Ausgabe wird ggf. die User local Zeit oder Date only Format berücksichtigt. Das führt dazu, dass du in der Regel die Datumseingabe bei Power Automate mit der Funktion utcNow() machen solltest. Dies kommt aber auch auf den Anwendungsfall an.

Format Eingabe (UTC+2) Dataverse Ausgabe (UTC-5)
Date only/Date only 2025-03-21T23:11 2025-03-21T23:11 2025-03-21T23:11
Datetime/TZI 2025-03-21T23:11 2025-03-21T23:11 2025-03-21T23:11
Datetime/User local 2025-03-21T23:11 2025-03-21T23:11 2025-03-21T23:11

In Power Automate werden Daten gespeichert, wie sie eingegeben werden.

Fazit

Dataverse bietet eine Reihe von Möglichkeiten Datums- und Zeitfelder zu formatieren. Je nach Anwendungsfall mit oder ohne Zeitzonenanpassung. Dies kann verwirrend sein, aber wenn du die folgenden Best Practises befolgst sollte es keine Probleme geben.


Kommentare

Leo Redlich
2025-03-31
Ein neuer Kommentar

Schreibe ein Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert