Olá,
Há alguma função em advpl que converta o formato timestamp em data do Protheus.
Exemplo:
FWTimeStamp( 4, date(), time() ) => "1618947701"
E "1618947701" para data existe alguma função?
Obrigado!
Olá,
Há alguma função em advpl que converta o formato timestamp em data do Protheus.
Exemplo:
FWTimeStamp( 4, date(), time() ) => "1618947701"
E "1618947701" para data existe alguma função?
Obrigado!
Danilo,
Normalmente usamos a função FWDateTimeToLocal
para essa conversão, porém ela não trabalha exatamente com o tipo 4 da FWTimeStamp
.
Logo, essa conversão pode ser feita "na mão", abaixo um exemplo de como trabalhar com a conversão do retorno da FWTimeStamp
, com todos os tipos de retorno:
#include "protheus.ch"
//-------------------------------------------------------------------
/*/{Protheus.doc} xTimeStamp
Testes da FWTimeStamp
@author Daniel Mendes
@since 20/04/2021
@version 1.0
/*/
//-------------------------------------------------------------------
user function xTimeStamp()
local cTimeStamp as char
local nDate as numeric
local nTime as numeric
local nHour as numeric
local nMin as numeric
local nSec as numeric
local dDate as date
local cTime as char
local aDate as array
local nI as numeric
//É usado o SX6 para verificar o horário de verão
RpcSetEnv("99","01")
cTimeStamp := FWTimeStamp(4)
nDate := Val(cTimeStamp) / 60 / 60 / 24
nTime := nDate - Int(nDate)
nDate := Int(nDate)
nHour := nTime * 24
nMin := (nHour - Int(nHour)) * 60
nHour := Int(nHour) -3 //TIMEZONE, pode verificar esse cálculo de outra forma...
nSec := Int((nMin - Int(nMin)) * 60) //Pode ser usado o Ceiling...
nMin := Int(nMin)
dDate := CtoD("01/01/1970") + nDate
cTime := StrZero(nHour, 2) + ":" + StrZero(nMin, 2) + ":" + StrZero(nMin, 2)
ConOut(dDate, cTime)
for nI := 1 to 6
if nI != 4
cTimeStamp := FWTimeStamp(nI)
aDate := FWDateTimeToLocal(cTimeStamp)
ConOut("", aDate[1], aDate[2])
aSize(aDate, 0)
aDate := nil
endif
next
RpcClearEnv()
return
Documentações: