fn:adjust-time-to-timezone
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 5.)
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
Kategorie: Datumsfunktionen – Zeitzone
Herkunft: XPath 2.0
Rückgabewert: Eine Zeitangabe xs:time
Aufruf/Argumente:
fn:adjust-time-to-timezone($zeit?, $zeitzone?)
$zeit:
Optional. Ein Zeitwert vom Typ xs:time. Wird kein Wert übergeben, so gibt die Funktion eine leere Sequenz zurück.
$zeitzone:
Optional. Das zweite Argument ist eine Zeitzonenangabe vom Typ xs:dayTimeDuration. Entfällt das Argument, so wird die im Auswertungskontext implizit vorhandene Zeitzonenangabe verwendet. Wird als zweites Argument die leere Sequenz übergeben, so wird eine vorhandene Zeitzonenangabe aus dem Zeitwert entfernt.
Die Zeitzonenangabe darf einen Wert von -PT14H nicht unter- und einen Wert von PT14H nicht überschreiten. Andernfalls wird der Fehler Invalid timezone value (err:FODT0003) gemeldet.
Verwendungszweck:
Die Funktion passt einen Zeitwert xs:time an eine Zeitzonenangabe an, die entweder als zweites Argument übergeben wird oder sich implizit aus dem Kontext ergibt. Beim Ergebnis wird der ursprüngliche Zeitzonenfaktor berücksichtigt (siehe Beispiel 6).
Beispiele:
Beispiel 1 – ohne Übergabe einer Zeitzonenkorrekturangabe:
fn:adjust-time-to-timezone(
xs:time("10:00:00")
)
ergibt 10:00:00-05:00
Hier wurde eine implizite Zeitzonenangabe von -5:00 angenommen, entsprechend -PT5H0M. Da kein zweites Argument übergeben wurde, wird die implizite Zeitzonenangabe mit dem Zeitwert verknüpft und ausgegeben. Die Zeitangabe selbst wird nicht verändert.
Beispiel 2 – ohne Übergabe einer Zeitzonenkorrekturangabe:
fn:adjust-time-to-timezone(
xs:time("10:00:00-07:00")
)
ergibt 12:00:00-05:00
Hier wurde eine implizite Zeitzonenangabe von -5:00 angenommen, entsprechend -PT5H0M. Wird ein Zeitstempelwert mit Zeitzonenangabe, aber ohne Zeitzonenkorrekturangabe übergeben, so wird die Zeitzonenangabe verworfen und durch die implizite Zeitzonenangabe ersetzt. Die Uhrzeit wird angepasst, indem der ursprüngliche Zeitzonenfaktor subtrahiert und der neue addiert wird. Hier ergibt sich im Ergebnis 12:00:00 aus 10:00:00 – (-07:00) + (-05:00).
Beispiel 3 – mit Übergabe einer Zeitzonenkorrekturangabe:
fn:adjust-time-to-timezone(
xs:time("10:00:00"),
xs:dayTimeDuration("-PT10H")
)
ergibt 10:00:00-10:00
Wird ein Korrekturfaktor in Form einer Zeitzonenangabe als zweites Argument übergeben, so wird dieser mit dem Ergebnis verknüpft. Ein möglicherweise vorhandener impliziter Zeitzonenwert des Auswertungskontextes wird nicht berücksichtigt.
Beispiel 4 – mit Übergabe einer Zeitzonenkorrekturangabe:
fn:adjust-time-to-timezone(
xs:time("10:00:00-07:00"),
xs:dayTimeDuration("-PT10H")
)
ergibt 07:00:00-10:00
Besitzt der Wert bereits eine Zeitzonenangabe in Form eines Faktors, so wird dieser durch den übergebenen Zeitzonenfaktor ersetzt. Ein möglicherweise vorhandener impliziter Zeitzonenwert des Auswertungskontextes wird nicht berücksichtigt. Die Zeitangabe wird analog zu Beispiel 2 angepasst.
Beispiel 5 – mit Übergabe einer leeren Sequenz:
fn:adjust-time-to-timezone(
xs:time("10:00:00-07:00"),
()
)
ergibt 10:00:00
Besitzt die Zeitangabe eine Zeitzonenangabe und wird der Funktion als zweites Argument eine leere Sequenz übergeben, so wird die Zeitzonenangabe aus der Zeitangabe entfernt. Ein möglicherweise vorhandener impliziter Zeitzonenwert des Auswertungskontextes wird nicht berücksichtigt.
Beispiel 6 – mit Bereichsüberschreitung:
fn:adjust-time-to-timezone(
xs:time("10:00:00-07:00"),
xs:dayTimeDuration("PT10H")
)
ergibt 03:00:00+10:00
Ergibt die Korrektur der Zeitangabe bei Einrechnung beider Zeitzonenkorrekturangaben einen Wert größer 24 für die Stundenangabe, so wird die Zeitangabe auf den Ergebniswert minus 24 Stunden angepasst. Hier ergibt sich für die Zeitangabe (10:00:00 – (-07:00)) + 10:00 gleich 27 Stunden, was auf 03:00:00 umgerechnet wird.
Funktionsdefinition:
XPath 1.0:
Funktion nicht verfügbar
XPath 2.0:
fn:adjust-time-to-timezone($arg as xs:time?)
as xs:time?
fn:adjust-time-to-timezone($arg as xs:time?,
$timezone as xs:dayTimeDuration?)
as xs:time?
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