PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → [WINDEV 19] Data e hora posix
[WINDEV 19] Data e hora posix
Iniciado por pedrosao, fev., 21 2015 12:30 PM - Sem resposta
Membro registado
42 mensagems
Popularité : +7 (7 votes)
Publicado em fevereiro, 21 2015 - 12:30 PM
Posix (Unix Timestamp) corresponde ao número de segundos após 01/01/1970.
// Summary: Converte Data/Hora para Tempo Unix (Posix) = nro. de sgundos após 01/01/1970
// Syntax:
//[ <Result> = ] ConvDtHo2UnixTime (<pDtHo> is datetime)
//
// Parameters:
// pDtHo (datetime): data e hora a converter
// Return Value:
// duration: // data Posix (timestamp Unix)
//
// For instance:
// tmpUnix is duration = ConvDtHo2UnixTime(tmpdtho)
// TempoUnix = tmpUnix..InSeconds
//
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

// Summary: Converte Tempo Unix (Posix = nro. de sgundos após 01/01/1970) para Data/Hora
// Syntax:
//[ <Result> = ] ConvUnixTime2DtHo (<pUnixTime> is numeric)
//
// Parameters:
// pUnixTime (numeric): data Posix (timestamp Unix)
// Return Value:
// datetime: // data e hora
//
// For instance:
// tmpUnix is numeric = TempoUnix
// tmpDtHo is datetime = ConvUnixTime2DtHo(tmpUnix)
//
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


Fonte: Lifetech