Re: [xsl] XPath expression to extract the hour offset from strings that express time offset from UTC?

Subject: Re: [xsl] XPath expression to extract the hour offset from strings that express time offset from UTC?
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 13 Dec 2022 13:56:14 -0000
Am 12/13/2022 um 2:49 PM schrieb Roger L Costello costello@xxxxxxxxx:
Hi Folks,

I have strings that express time offset from UTC. Here are representative
examples:

UTC+5 UTC+1(+2DT) UTC-11 UTC+4:30 UTC+9:30(+10:30DT)

In areas where daylight savings time is observed, the daylight savings time
is the part in parentheses.

Some offsets have both an hour and minute. The minute portion is after the
colon.

I need to extract the hour offset. So for the above examples, I need to
extract:

+5 +1 -11 +4 +9

This XPath expression seems to do the job:

let $time := "UTC+9:30(+10:30DT)" return
     if (contains($time,'(')) then
         let $part := substring-after(substring-before($time,'('),'UTC')
return
             if (contains($part,':')) then
                 substring-before($part,':')
             else
                 $part
     else
         let $part := substring-after($time,'UTC') return
             if (contains($part,':')) then
                 substring-before($part,':')
             else
                 $part

Is there a better (simpler, shorter) XPath expression for doing this?

I would consider analyze-string e.g.

B  analyze-string(., '^UTC([+-][0-9]{1,2})')/*:match/*:group[@nr =
1]/string()

Current Thread