Operationen mit Datums-, Zeit- und Zeitstempelwerten

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 3.)

Sind die erforderlichen Datentypen für die gewünschten Operationen gewährleistet, sei es durch Konstruktor oder Casting, so kann mit Zeitwerten, Datums­werten und Zeitstempeln sehr einfach gerechnet werden.

Folgende mathematischen Operationen sind für die betrachteten Werttypen möglich – es wird der jeweilige Ergebnistyp genannt:

Operator Bezeichnung Anwendungsbereich

+

Addition

xs:date  + xs:yearMonthDuration 

->xs:date

xs:date  + xs:dayTimeDuration 

->xs:date

xs:time  + xs:dayTimeDuration 

->xs:time

xs:datetime  + xs:yearMonthDuration 

-> xs:dateTime

xs:datetime  + xs:dayTimeDuration 

-> xs:dateTime

xs:yearMonthDuration  + xs:yearMonthDuration 

-> xs:yearMonthDuration

xs:dayTimeDuration  + xs:dayTimeDuration

-> xs:dayTimeDuration 

-

Subtraktion

xs:date – xs:date 

-> xs:dayTimeDuration

xs:date – xs:yearMonthDuration 

-> xs:date

xs:date – xs:dayTimeDuration 

-> xs:date

xs:time – xs:time 

-> xs:dayTimeDuration

xs:time – xs:dayTimeDuration 

-> xs:time

xs:datetime – xs:datetime 

-> xs:dayTimeDuration

xs:datetime – xs:yearMonthDuration 

-> xs:dateTime

xs:datetime – xs:dayTimeDuration 

-> xs:dateTime

xs:yearMonthDuration – xs:yearMonthDuration

-> xs:yearMonthDuration

xs:dayTimeDuration – xs:dayTimeDuration 

-> xs:dayTimeDuration

*

Multiplikation

xs:decimal  *  xs:yearMonthDuration

-> xs:yearMonthDuration

xs:decimal  *  xs:dayTimeDuration

-> xs:dayTimeDuration

div

Division

xs:yearMonthDuration xs:decimal

-> xs:yearMonthDuration

xs:dayTimeDuration xs:decimal

-> xs:dayTimeDuration

Tabelle: Operationen mit Datums-, Zeit- und Zeitstempelwerten.

Will man beispielsweise die Differenz zweier Datumswerte ermitteln, so kann man diese also einfach voneinander abziehen. Ergebnis ist, gemäß der oben stehenden Tabelle, ein Zeitdauerwert xs:dayTimeDuration. Die Anzahl der Tage muss noch mittels der Funktion fn:days-from-duration() extrahiert werden, da der Zeitdauerwert selbst als Stringwert etwas kryptisch wirkt:

<xsl:variable name="heute" select="fn:current-date()"/>
<xsl:variable name="dann" select="'2010-01-01'"/>
<p>Bis zum <xsl:value-of select="format-date(xs:date($dann),'[D1].[M1].[Y0001]')"/> sind es <xsl:value-of select="fn:days-from-duration(xs:date($dann) - $heute)"/> Tage.</p>

Code-Beispiel: kap03/3.05/date.xsl (Auszug).

Als weitere Funktionen zur Extraktion von Komponenten aus Zeitdauerwerten stehen zur Verfügung: fn:hours-from-duration(), fn:minutes-from-duration(), fn:months-from-duration(), fn:seconds-from-duration() und fn:years-from-duration(). Sie erfahren mehr über sie im Referenzteil, Kapitel 5, Referenz XSLT- und XPath-Funktionen.

   

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Galileo Press, Rheinwerkallee 4, 53227 Bonn