Code: Select all
lnZile = Iif(!Empty(m.tnZile), Min(m.tnZile, 60), 60)
ltEndTime = GetUtcTime(DATETIME()-60) && 60 de secunde in urma, ca sa fiu sigur? ca ceasul calculatorului nu este inainte fata de timpul serverului ANAF. Poate fi si cu mai mult de 1 minut
ltStartTime = ltEndTime - m.lnZile*24*60*60
lcStartTime = ALLTRIM(STR(Datetime2UnixTime(m.ltStartTime))) + '000'
lcEndTime = ALLTRIM(STR(Datetime2UnixTime(m.ltEndTime))) + '000'
FUNCTION GetUtcTime(ltTime)
IF EMPTY(ltTime)
ltTime = DATETIME()
ENDIF
*** Adjust the timezone offset
RETURN ltTime + (GetTimeZone() * 60)
ENDFUNC
* GetUtcTime
FUNCTION GetTimeZone
*********************************
*** Function: Returns the TimeZone offset from GMT including
*** daylight savings. Result is returned in minutes.
************************************************************************
PUBLIC __TimeZone
*** Cache the timezone so this is fast
IF VARTYPE(__TimeZone) = "N"
RETURN __TimeZone
ENDIF
DECLARE integer GetTimeZoneInformation IN Win32API ;
STRING @ TimeZoneStruct
lcTZ = SPACE(256)
lnDayLightSavings = GetTimeZoneInformation(@lcTZ)
lnOffset = CharToBin(SUBSTR(lcTZ,1,4),.T.)
*** Subtract an hour if daylight savings is active
IF lnDaylightSavings = 2
lnOffset = lnOffset - 60
ENDIF
__TimeZone = lnOffset
RETURN lnOffSet
************************************************************************
* FromUtcTime
****************************************
*** Function: Returns local time from UTC Time
*** Assume:
*** Pass:
*** Return:
************************************************************************
FUNCTION FromUtcTime(ltTime)
RETURN ltTime - (GetTimeZone() * 60)
ENDFUNC
* FromUtcTime
* Convert Unix time to datetime
FUNCTION UnixTime2Datetime(tnUnixTime)
RETURN {^1970/01/01 00:00:00} + tnUnixTime
* Convert datetime to Unix time
FUNCTION Datetime2UnixTime(ttDT)
IF EMPTY(m.ttDT)
ttDT = DATETIME()
ENDIF
RETURN ttDT - {^1970/01/01 00:00:00}