Enrico, I found a bug. The source code below has been corrected.
before correction:
UTOD("1638497277000-0300") // 03/12/2021 -1:07
after correction:
UTOD("1638497277000-0300") // 02/12/2021 23:07
New code:
STATIC FUNCTION UTOD( cSer )
LOCAL nSec := INT( VAL( cSer ) / 1000 )
LOCAL nMin := INT( nSec / 60 )
LOCAL nHou := INT( nMin / 60 )
LOCAL nDay := INT( nHou / 24 )
LOCAL nZon := VAL( RIGHT( cSer, 5 ) ) / 100
LOCAL cDat := DTOC( STOD( "19700101" ) + nDay )
Local nHours := nHou - nDay * 24 + nZon
LOCAL cMin := STRZERO( nMin - nHou * 60, 2 )
Local dDate := CtoD(cDat)
If nHours < 0
dDate--
nHours = nHours + 24
EndIf
RETURN DtoC(dDate) + " " + StrZero(nHours, 2) + ":" + cMin