PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → WX - Como converter uma data e hora para Posix e vice-versa ?
WX - Como converter uma data e hora para Posix e vice-versa ?
Débuté par adrianoboller, 31 aoû. 2015 22:42 - 1 réponse
Membre enregistré
3 659 messages
Popularité : +175 (223 votes)
Posté le 31 août 2015 - 22:42
Procedure ConvDtHo2UnixTime(pDtHo is DateTime)

tmpDtHo is DateTime = pDtHo

tmpDtHo..Millisecond = 0

// calcula a diferença de tempo entre 01/01/1970 e a data fornecida

tmpDif is TO string = DateTimeDifference("19700101000000",tmpDtHo)

// calcula a data Posix

tmpUnix is Duration = StringToDuration(tmpDif,durationCenti)

tmpUnix..Millisecond = 0

RESULT tmpUnix
Membre enregistré
3 659 messages
Popularité : +175 (223 votes)
Posté le 31 août 2015 - 22:42
Procedure ConvUnixTime2DtHo(pUnixTime is numeric)

tmpMaxInt4b is int on 4 bytes = 2147483647

tmpSegundos is int on 8 bytes

tmpUnix is Duration

IF pUnixTime <= tmpMaxInt4b THEN

tmpUnix..Second = pUnixTime

ELSE // para suportar datas após 19/01/2038 e Posix > 2147483647 (valor máximo em 4 bytes)

tmpSegundos = pUnixTime

LOOP

tmpUnix..Second += tmpMaxInt4b

tmpSegundos -= tmpMaxInt4b

IF tmpSegundos < tmpMaxInt4b THEN

tmpUnix..Second += tmpSegundos

BREAK

END

END

END

tmpDtHo is DateTime = "19700101000000"

tmpDtHo += tmpUnix

RESULT tmpDtHo