Description
The functx:timezone-from-duration function accepts an xs:dayTimeDuration and converts it to a timezone value (formatted as it appears in xs:date, xs:time, xs:dateTime etc. values). The dayTimeDuration may only have the hours (H) component (or the seconds component if the value is PT0S) and must be between -PT14H and PT14H inclusive.
Arguments and Return Type| Name | Type | Description |
$duration |
xs:dayTimeDuration |
the duration |
| return value |
xs:string |
XQuery Function Declaration| See XSLT definition. | | XQuery Syntax for January 2007 (1.0): |
|---|
declare namespace functx = "http://www.functx.com";
declare function functx:timezone-from-duration
( $duration as xs:dayTimeDuration ) as xs:string {
if (string($duration) = ('PT0S','-PT0S'))
then 'Z'
else if (matches(string($duration),'-PT[1-9]H'))
then replace(string($duration),'PT([1-9])H','0$1:00')
else if (matches(string($duration),'PT[1-9]H'))
then replace(string($duration),'PT([1-9])H','+0$1:00')
else if (matches(string($duration),'-PT1[0-4]H'))
then replace(string($duration),'PT(1[0-4])H','$1:00')
else if (matches(string($duration),'PT1[0-4]H'))
then replace(string($duration),'PT(1[0-4])H','+$1:00')
else error(xs:QName('functx:Invalid_Duration_Value'))
} ; | | XQuery Syntax for July 2004 - November 2005 (CR): |
|---|
declare namespace functx = "http://www.functx.com";
declare function functx:timezone-from-duration
( $duration as xdt:dayTimeDuration ) as xs:string {
if (string($duration) = ('PT0S','-PT0S'))
then 'Z'
else if (matches(string($duration),'-PT[1-9]H'))
then replace(string($duration),'PT([1-9])H','0$1:00')
else if (matches(string($duration),'PT[1-9]H'))
then replace(string($duration),'PT([1-9])H','+0$1:00')
else if (matches(string($duration),'-PT1[0-4]H'))
then replace(string($duration),'PT(1[0-4])H','$1:00')
else if (matches(string($duration),'PT1[0-4]H'))
then replace(string($duration),'PT(1[0-4])H','+$1:00')
else error(xs:QName('functx:Invalid_Duration_Value'))
} ; | | XQuery Syntax for May 2003: |
|---|
declare namespace functx = "http://www.functx.com"
define function timezone-from-duration
( $duration as xdt:dayTimeDuration ) as xs:string {
if (fn:string($duration) = ('PT0S','-PT0S'))
then 'Z'
else if (fn:matches(fn:string($duration),'-PT[1-9]H'))
then fn:replace(fn:string($duration),'PT([1-9])H','0$1:00')
else if (fn:matches(fn:string($duration),'PT[1-9]H'))
then fn:replace(fn:string($duration),'PT([1-9])H','+0$1:00')
else if (fn:matches(fn:string($duration),'-PT1[0-4]H'))
then fn:replace(fn:string($duration),'PT(1[0-4])H','$1:00')
else if (fn:matches(fn:string($duration),'PT1[0-4]H'))
then fn:replace(fn:string($duration),'PT(1[0-4])H','+$1:00')
else fn:error(xs:QName('functx:Invalid_Duration_Value'))
} |
Examples| XQuery Example | Results |
|---|
functx:timezone-from-duration(
xs:dayTimeDuration('PT0S'))
|
Z
|
functx:timezone-from-duration(
xs:dayTimeDuration('-PT5H'))
|
-05:00
|
functx:timezone-from-duration(
xs:dayTimeDuration('PT9H'))
|
+09:00
|
See AlsoHistory |
|