Funkcia odpočíta od absolútneho času TimeA absolútny čas TimeB. Výsledkom je hodnota typu Relatívny čas.
Deklarácia
REAL %SubTimesLocal(
TIME in TimeA,
TIME in TimeB,
TEXT in timeZone := %GetCurrentTimeZone()
)
Parametre
TimeA
Absolútny čas.
TimeB
Absolútny čas.
timeZone
Názov časového pásma pre prevod na lokálny čas (napr. "Europe/London") alebo definícia fixného posunu od UTC vo formáte "(+|-)hh[:mi[:ss]]", kdehhurčuje počet hodín,mipočet minút asspočet sekúnd. Znamienko posunu a počet hodín sú povinné časti definície posunu, počet minút a sekúnd sú volitelné a predvolene sú 0 (napr. "+02:30" definuje posun 2 hodiny a 30 minút od UTC). Prázdny text je interpretovaný rovnako ako volanie funkcie %GetCurrentTimeZone. Z historických dôvodov je akceptovaný aj celočíselný parameter, ktorý je interpretovaný nasledovne: 0 - zóna "Europe/London", 3600 - zóna "Europe/Bratislava", 7200 - zóna "Europe/Kiev", 21600 - zóna "Asia/Almaty". Použitie celočíselného parametra sa neodporúča a generuje upozornenie do logovacieho súboru!
Popis
Funkcia %SubTimesLocal odčítava od seba dva absolútne časy. Výsledok nebude ovplyvnený skutočnosťou, či v tomto intervale boli alebo neboli časové prechody. Napríklad rozdiel medzi 4:00 a 1:00 ráno je vždy 3 hodiny.
Príklad
; =================================================================
; Using time zone "Europe/Bratislava"
; Daylight saving time was observed in year 2009, therefore time shifts occured.
; Winter [B] time was 1 hour ahead of UTC, summer [A] time was 2 hours ahead of UTC.
; Summer time was from 29th March 2009 to 24th October 2009.
; A3:00:00 is changed to B2:00:00 on Sunday (25th October 2009).
; =================================================================
BEGIN
TIME _timeA
TIME _timeB
TIME _baseTime
REAL _subLocal1
REAL _subLocal2
; 2009-10-25 00:30:00 UTC
_timeA := %StrToTimeEx("2009-10-25 A2:30:00", "yyyy-mm-dd hh:mi:ss", "Europe/Bratislava")
; 2009-10-25 01:30:00 UTC
_timeB := %StrToTimeEx("2009-10-25 B2:30:00", "yyyy-mm-dd hh:mi:ss", "Europe/Bratislava")
; 2009-10-24 23:30:00 UTC
_baseTime := %StrToTimeEx("2009-10-25 01:30:00", "yyyy-mm-dd hh:mi:ss", "Europe/Bratislava")
; difference 1 hour(s) (3600 seconds)
_subLocal1 := %SubTimesLocal(_timeA, _baseTime, "Europe/Bratislava")
; difference 1 hour(s) (3600 seconds)
_subLocal2 := %SubTimesLocal(_timeB, _baseTime, "Europe/Bratislava")
END