3 TIO link
source | link
2 explanation and example run
source | link

Expression

Takes two strings as right argument.

Explanation

24 60⊤ the number-to-base-a24b60 conversion

of

the evaluation

of

the formatted (i.e. flattened with separating spaces)

('+-'∩⍕) intersection of "+-" and the formatted input (this extracts the plus or minus)

, followed by

(... the following for each of the inputs (the time and the offset)

0 60⊥ the ab60-to-number conversion of

2⊃ the second element of

':'⎕VFI the, using colon as field separator, Verified and Fixed Input of

¯5∘↑ the last five characters ("hh:mm")

Step-by-step on "17:25" and "UTC+09:00"

The left-side expression on the right side data, gives the data of the next line.


                       '17:25' 'UTC+09:00'
                      /     /   \         \
(...)¨ applies the function train to both inputs
                    /     /       \         \
¯5∘↑               '17:25'         'UTC+09:00'
':'⎕VFI            '17:25'         '09:00' 
2⊃            (1 1)(17 25)         (1 1)(9 0)
0 60⊥                17 25         9 0
                      1045         540
                       \  \       / /
This is where ¨ stops, and execution continues on the resulting list
                         \  \   / /
'/',                      1045 540
('+-'∩⍕),             '/' 1045 540
⍕                 '+' '/' 1045 540
⍎                   '+ / 1045 540'
24 60⊤                        1585
                              2 25

Expression

Takes two strings as right argument.

Explanation

24 60⊤ the number-to-base-a24b60 conversion

of

the evaluation

of

the formatted (i.e. flattened with separating spaces)

('+-'∩⍕) intersection of "+-" and the formatted input (this extracts the plus or minus)

, followed by

(... the following for each of the inputs (the time and the offset)

0 60⊥ the ab60-to-number conversion of

2⊃ the second element of

':'⎕VFI the, using colon as field separator, Verified and Fixed Input of

¯5∘↑ the last five characters ("hh:mm")

Step-by-step on "17:25" and "UTC+09:00"

The left-side expression on the right side data, gives the data of the next line.


                       '17:25' 'UTC+09:00'
                      /     /   \         \
(...)¨ applies the function train to both inputs
                    /     /       \         \
¯5∘↑               '17:25'         'UTC+09:00'
':'⎕VFI            '17:25'         '09:00' 
2⊃            (1 1)(17 25)         (1 1)(9 0)
0 60⊥                17 25         9 0
                      1045         540
                       \  \       / /
This is where ¨ stops, and execution continues on the resulting list
                         \  \   / /
'/',                      1045 540
('+-'∩⍕),             '/' 1045 540
⍕                 '+' '/' 1045 540
⍎                   '+ / 1045 540'
24 60⊤                        1585
                              2 25
1
source | link

Dyalog APL, 45 bytes

24 60⊤∘⍎∘⍕('+-'∩⍕),'/',(0 60⊥2⊃':'⎕VFI ¯5∘↑)¨