DateDiff
Kurzbeschreibung
Das XML-Element
<DateDiff>berechnet die Differenz zwischen zwei Datumswerten.Das Ergebnis kann in Tagen oder Wochen ausgegeben werden.
Die beiden Datumswerte können entweder als feste Werte angegeben oder über Variablenpfade gelesen werden.
Einordnung
Bereich: Funktionen
Schwierigkeitsgrad: ⭐⭐⭐☆☆
Vorkenntnisse: Variable · Datumsformate
Status des Artikels
Die grundsätzliche Funktion und die verfügbaren Attribute stammen aus der Elementkonfiguration.
Da derzeit kein belastbares Anwendungsbeispiel vorliegt, müssen die dargestellte Subtraktionsrichtung und die Beispielsyntax noch praktisch im Developer geprüft werden.
Siehe auch
- DateAdd
- Converter
- Variable
- Math
Zweck
Mit <DateDiff> lässt sich der zeitliche Abstand zwischen zwei Datumswerten ermitteln.
Typische Anwendungsfälle sind:
- Anzahl der Tage zwischen zwei Terminen,
- Dauer eines Zeitraums,
- verbleibende Tage bis zu einem Termin,
- vergangene Tage seit einem Ereignis,
- Umrechnung eines Zeitraums in Wochen.
<DateDiff> verändert die verwendeten Datumswerte nicht.
Es berechnet aus beiden Werten ein neues Ergebnis.
Berechnungsprinzip
Aus den Namen und Beschreibungen der Attribute ergibt sich voraussichtlich folgende Berechnung:
Left − Right = ErgebnisDabei ist:
Leftder Datumswert, von dem abgezogen wird,Rightder Datumswert, der abgezogen wird.
Beispiel:
31.08.2026 − 01.08.2026 = 30 TageWichtig
Die Subtraktionsrichtung wurde aus den Attributbeschreibungen abgeleitet.
Sie sollte beim ersten praktischen Einsatz mit eindeutig unterscheidbaren Datumswerten geprüft werden.
Position innerhalb der Dokumentvorlage
Da <DateDiff> ein Ergebnis erzeugt, wird es voraussichtlich innerhalb eines <Content> verwendet.
<Block>
<Content>
<DateDiff
Ausgabe="Tage"
LeftValue="31.08.2026"
LeftFormat="dd.MM.yyyy"
RightValue="01.08.2026"
RightFormat="dd.MM.yyyy">
</DateDiff>
</Content>
</Block>Das berechnete Ergebnis wird an der Position von <DateDiff> ausgegeben.
Hinweis
Die Verwendung innerhalb von
<Content>ist aus dem Ausgabecharakter der Funktion abgeleitet und muss noch praktisch bestätigt werden.
Attribute
| Attribut | Beschreibung |
|---|---|
| Ausgabe | Legt fest, ob die berechnete Differenz in Tagen oder Wochen ausgegeben wird. |
| LeftValue | Enthält ein fest eingetragenes Datum, von dem der rechte Datumswert abgezogen wird. |
| LeftPath | Enthält den Pfad zu einer Variable, deren Datum als linker Ausgangswert verwendet wird. |
| LeftFormat | Beschreibt das Format des linken Datumswertes. |
| RightValue | Enthält ein fest eingetragenes Datum, das vom linken Datumswert abgezogen wird. |
| RightPath | Enthält den Pfad zu einer Variable, deren Datum als rechter Wert verwendet wird. |
| RightFormat | Beschreibt das Format des rechten Datumswertes. |
Hinweis
Die Beschreibungen von
LeftFormatundRightFormatscheinen in der Elementkonfiguration sprachlich vertauscht zu sein.In diesem Artikel werden die Attribute entsprechend ihrer Namen dem jeweiligen linken beziehungsweise rechten Datumswert zugeordnet.
Werte für Ausgabe
Für das Attribut Ausgabe stehen aktuell folgende Werte zur Verfügung:
| Wert | Beschreibung |
|---|---|
| Tage | Gibt die Datumsdifferenz in Tagen aus. |
| Wochen | Gibt die Datumsdifferenz in Wochen aus. |
Beispiel:
<DateDiff
Ausgabe="Tage"
...>
</DateDiff>Die Schreibweise sollte entsprechend der IntelliSense übernommen werden.
Fester Wert oder Variablenpfad
Für beide Seiten der Berechnung stehen jeweils zwei Möglichkeiten bereit:
| Linke Seite | Rechte Seite | Verwendung |
|---|---|---|
LeftValue |
RightValue |
Datum wird direkt als fester Wert eingetragen. |
LeftPath |
RightPath |
Datum wird während der Dokumenterzeugung aus einer Variable gelesen. |
Für dieselbe Seite sollte jeweils entweder Value oder Path verwendet werden.
LeftValue oder LeftPath
RightValue oder RightPathEine gleichzeitige Verwendung beider Varianten für dieselbe Seite ist zu vermeiden, solange nicht geklärt ist, welcher Wert Vorrang besitzt.
Datumsformate
Mit LeftFormat und RightFormat wird beschrieben, in welchem Format die jeweiligen Datumswerte vorliegen.
Mögliche Formatmasken sind beispielsweise:
| Format | Beispiel |
|---|---|
dd.MM.yyyy |
05.08.2026 |
yyyy-MM-dd |
2026-08-05 |
dd.MM.yy |
05.08.26 |
Das angegebene Format muss zum tatsächlichen Datumswert passen.
Beispiel:
<DateDiff
LeftValue="31.08.2026"
LeftFormat="dd.MM.yyyy"
RightValue="2026-08-01"
RightFormat="yyyy-MM-dd"
Ausgabe="Tage">
</DateDiff>Vorläufige Beispiele
Die folgenden Beispiele wurden aus den verfügbaren Attributen abgeleitet und müssen noch im Developer getestet werden.
Zwei feste Datumswerte vergleichen
<DateDiff
Ausgabe="Tage"
LeftValue="31.08.2026"
LeftFormat="dd.MM.yyyy"
RightValue="01.08.2026"
RightFormat="dd.MM.yyyy">
</DateDiff>Voraussichtliches Ergebnis:
30Zwei Variablen vergleichen
<DateDiff
Ausgabe="Tage"
LeftPath="custom.enddatum"
LeftFormat="dd.MM.yyyy"
RightPath="custom.startdatum"
RightFormat="dd.MM.yyyy">
</DateDiff>Dabei wird voraussichtlich folgende Differenz berechnet:
custom.enddatum − custom.startdatumFestes Datum und Variable kombinieren
<DateDiff
Ausgabe="Tage"
LeftPath="custom.enddatum"
LeftFormat="dd.MM.yyyy"
RightValue="01.08.2026"
RightFormat="dd.MM.yyyy">
</DateDiff>Damit kann ein dynamischer Datumswert mit einem fest definierten Datum verglichen werden.
Differenz in Wochen
<DateDiff
Ausgabe="Wochen"
LeftValue="29.08.2026"
LeftFormat="dd.MM.yyyy"
RightValue="01.08.2026"
RightFormat="dd.MM.yyyy">
</DateDiff>Bei einer Differenz von 28 Tagen wäre ein Ergebnis von vier Wochen zu erwarten.
Noch zu prüfen
Bei einer Differenz, die keine vollständige Anzahl von Wochen ergibt, ist derzeit nicht bekannt, ob
<DateDiff>
- abrundet,
- aufrundet,
- kaufmännisch rundet oder
- einen Dezimalwert ausgibt.
Negative Ergebnisse
Ergibt die linke Seite ein früheres Datum als die rechte Seite, könnte die Berechnung ein negatives Ergebnis erzeugen.
Beispiel:
01.08.2026 − 31.08.2026Das erwartete mathematische Ergebnis wäre:
−30 TageOb <DateDiff> tatsächlich negative Werte ausgibt oder stattdessen den absoluten Abstand berechnet, muss noch praktisch geprüft werden.
Zusammenspiel mit Converter
Datumswerte müssen in einem Format vorliegen, das von <DateDiff> korrekt verarbeitet werden kann.
Liefert eine Datenquelle ein ungeeignetes Format, kann zuvor ein <Converter> verwendet werden.
Variable
│
▼
Converter
│
▼
DateDiffDabei ist zu prüfen, ob <DateDiff> verschachtelte Funktionen als Operanden unterstützt oder ob der konvertierte Wert zunächst mit einem <Setter> gespeichert werden muss.
Typische Einsatzgebiete
<DateDiff> könnte beispielsweise verwendet werden für:
- Laufzeiten,
- Bearbeitungsdauern,
- Fristberechnungen,
- Zeiträume zwischen Beginn und Ende,
- verbleibende Tage bis zu einem Termin,
- vergangene Tage seit einem Ereignis,
- Ausgabe vollständiger Wochen zwischen zwei Datumswerten.
DateDiff oder DateAdd?
<DateDiff> und <DateAdd> verarbeiten beide Datumswerte, erfüllen jedoch unterschiedliche Aufgaben.
| DateDiff | DateAdd |
|---|---|
| Vergleicht zwei Datumswerte. | Verändert einen Datumswert. |
| Gibt einen Zeitraum aus. | Gibt ein neues Datum aus. |
| Ergebnis beispielsweise in Tagen oder Wochen. | Berechnung mit Tagen, Monaten oder Jahren. |
Als Faustregel gilt:
<DateDiff>, wenn der Abstand zwischen zwei Daten benötigt wird.<DateAdd>, wenn aus einem Datum ein neues Datum berechnet werden soll.
Best Practices
- Für jede Seite entweder
ValueoderPathverwenden. - Das Datumsformat immer passend zum tatsächlichen Wert angeben.
- Die Subtraktionsrichtung mit eindeutigen Testdaten prüfen.
- Berechnungen sowohl mit positiven als auch möglichen negativen Ergebnissen testen.
- Die Wochenberechnung auch mit unvollständigen Wochen prüfen.
- Leere oder ungültige Datumswerte in den Testfällen berücksichtigen.
- Die von der IntelliSense angebotene Schreibweise verwenden.
Developer-Tipp
Verwenden Sie beim ersten Test zwei Datumswerte, deren Differenz eindeutig erkennbar ist.
Beispiel:
11.08.2026 und 01.08.2026So lässt sich schnell feststellen,
- in welcher Richtung gerechnet wird,
- ob das Ergebnis positiv oder negativ sein kann und
- wie die Ausgabe in Wochen behandelt wird.
Offene Prüfpunkte
Für die praktische Überprüfung sollten folgende Fragen geklärt werden:
- Erfolgt die Berechnung tatsächlich nach
Left − Right? - Können negative Ergebnisse entstehen?
- Wie werden angebrochene Wochen behandelt?
- Was geschieht bei einem leeren
LeftPathoderRightPath? - Was geschieht bei einem ungültigen Datumsformat?
- Wird das Ergebnis unmittelbar innerhalb von
<Content>ausgegeben? - Können konvertierte oder zusammengesetzte Werte als Unterelemente verwendet werden?
- Welche Kombinationen aus
ValueundPathwerden technisch akzeptiert?
XML-Wissen
<DateDiff> ist laut Elementkonfiguration ein Container.
Die bekannte Konfiguration steuert die beiden Datumswerte jedoch vollständig über Attribute.
Welche Unterelemente innerhalb des Containers tatsächlich zulässig und sinnvoll sind, geht aus den derzeit verfügbaren Informationen nicht hervor.
Bis zur praktischen Prüfung sollte <DateDiff> daher ohne zusätzliche Unterelemente verwendet werden.
Fazit
<DateDiff> berechnet voraussichtlich die Differenz zwischen einem linken und einem rechten Datumswert.
Beide Werte können als feste Daten oder über Variablenpfade bereitgestellt werden. Die Ausgabe erfolgt in Tagen oder Wochen.
Da das Element bislang nur sehr selten in vorhandenen Vorlagen vorkommt, sollte dieser Artikel anhand eines gezielten Tests weiter geschärft werden. Die offenen Prüfpunkte bieten dafür eine konkrete Testliste.