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 überge­ben, so gibt die Funktion eine leere Sequenz zurück.

$zeitzone:
Optional. Das zweite Argument ist eine Zeitzonen­angabe vom Typ xs:dayTimeDuration. Entfällt das Argument, so wird die im Auswer­tungskontext implizit vorhandene Zeitzonenangabe verwendet. Wird als zwei­tes Argument die leere Sequenz übergeben, so wird eine vorhandene Zeitzo­nenangabe 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ück­sichtigt (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, entspre­chend -PT5H0M. Da kein zweites Argument übergeben wurde, wird die impli­zite Zeitzonenangabe mit dem Zeitwert verknüpft und ausgegeben. Die Zeitan­gabe 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, entspre­chend -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 Zeitzonen­wert 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 Zeitzonenkorrek­turangaben einen Wert größer 24 für die Stundenangabe, so wird die Zeitan­gabe 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