PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → [WX] Trabalhando com datas, horas, verificando diferenças entre elas e somando minutos
[WX] Trabalhando com datas, horas, verificando diferenças entre elas e somando minutos
Débuté par adrianoboller, 04 mar. 2015 22:50 - 4 réponses
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 04 mars 2015 - 22:50
###############################################################
Trabalhando com datas, horas, verificando diferenças entre elas e somando minutos
###############################################################

Procedure ws_verifica_hora_servidor(DataHoraMobile)

Q is int = 0

ok, DataHoraValida, OkConn is boolean = False

Resultado is string= ""

dsQryDataHora is Data Source

DataHoraServidor is string = ""

OkConn = HOpenConnection(ConnNativa)

//Valida intervalo valido
DataHoraServidorMaior, DataHoraServidorMenor, DataHoraMobileCompara is DateTime

//Data e Hora do Servidor
IF OkConn = True AND DataHoraMobile <> "" AND DataHoraMobile <> Null THEN

//Ex.: 20150304154034447
ok = HExecuteSQLQuery(dsQryDataHora, ConnNativa, hQueryWithoutCorrection,"Select CURRENT_TIMESTAMP as datahoraatual")
IF ok = True THEN
FOR EACH dsQryDataHora
DataHoraServidor = dsQryDataHora.datahoraatual
END
END

//Tamanho padrao
IF Length(DataHoraMobile) < 17 THEN
Q = 17 - Length(DataHoraMobile)
DataHoraMobile = DataHoraMobile + RepeatString("0", Q)
END
IF Length(DataHoraServidor) < 17 THEN
Q = 17 - Length(DataHoraServidor)
DataHoraServidor = DataHoraServidor + RepeatString("0", Q)
END

//Ex.: 20150304154034000
// 12345678901234567
DataHoraServidorMaior..Year = Middle(DataHoraServidor,01,04)
DataHoraServidorMaior..Month = Middle(DataHoraServidor,05,02)
DataHoraServidorMaior..Day = Middle(DataHoraServidor,07,02)
DataHoraServidorMaior..Hour = Middle(DataHoraServidor,09,02)
DataHoraServidorMaior..Minute = Middle(DataHoraServidor,11,02)
DataHoraServidorMaior..Minute += 30 //+30 min

//Ex.: 20150304154034000
// 12345678901234567
DataHoraServidorMenor..Year = Middle(DataHoraServidor,01,04)
DataHoraServidorMenor..Month = Middle(DataHoraServidor,05,02)
DataHoraServidorMenor..Day = Middle(DataHoraServidor,07,02)
DataHoraServidorMenor..Hour = Middle(DataHoraServidor,09,02)
DataHoraServidorMenor..Minute = Middle(DataHoraServidor,11,02)
DataHoraServidorMenor..Minute -= 30 //-30 min

//Ex.: 20150304154034000
// 12345678901234567
DataHoraMobileCompara..Year = Middle(DataHoraMobile,01,04)
DataHoraMobileCompara..Month = Middle(DataHoraMobile,05,02)
DataHoraMobileCompara..Day = Middle(DataHoraMobile,07,02)
DataHoraMobileCompara..Hour = Middle(DataHoraMobile,09,02)
DataHoraMobileCompara..Minute = Middle(DataHoraMobile,11,02)


// 20150304154034447 >= 20150304161034447 20150304154034447 <= 20150304151034447
IF Val(DataHoraMobile) >= Val(DataHoraServidorMaior) OR Val(DataHoraMobile) <= Val(DataHoraServidorMenor) THEN
DataHoraValida = False
ELSE
DataHoraValida = True
END

END

Resultado += "<Xml><Retorno>"

Resultado += "<AbriuConnexao>" + OkConn + "</AbriuConnexao>"

Resultado += "<DataHoraServidor>" + DataHoraServidor + "</DataHoraServidor>"

Resultado += "<DataHoraValida>" + DataHoraValida + "</DataHoraValida>"

IF OkConn = True
Resultado += ws_conexao_sucesso("Tabelas")
ELSE
Resultado += ws_conexao_falha("Tabelas")
END

OkConn = HCloseConnection(ConnNativa)

Resultado += "<FechouConnexao>" + OkConn + "</FechouConnexao>"

Resultado += "</Retorno></Xml>"

RESULT(Resultado)
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 04 mars 2015 - 22:52
<SOAP-ENV:Envelope><SOAP-ENV:Header><WSID xsi:type="xsd:hexBinary" mustUnderstand="1">F39F565577F729377E04961C67C7A403E783222F</WSID></SOAP-ENV:Header><SOAP-ENV:Body><xsd:ws_verifica_hora_servidorResult><Xml><Retorno><AbriuConnexao>1</AbriuConnexao><DataHoraServidor>20150304185154763</DataHoraServidor><DataHoraValida>0</DataHoraValida><Tabelas id="1"><OK>CONEXAO COM SUCESSO AO BANCO!!!!!!</OK><Banco>192.168.1.180</Banco></Tabelas><TOTAL>1</TOTAL><FechouConnexao>1</FechouConnexao></Retorno></Xml></xsd:ws_verifica_hora_servidorResult></SOAP-ENV:Body></SOAP-ENV:Envelope>
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 04 mars 2015 - 22:53
Quando a data e hora esta no intervalo correto a tag DataHoraValida passa a ser 1

<SOAP-ENV:Envelope><SOAP-ENV:Header><WSID xsi:type="xsd:hexBinary" mustUnderstand="1">F39F565577F729377E04961C67C7A403E783222F</WSID></SOAP-ENV:Header><SOAP-ENV:Body><xsd:ws_verifica_hora_servidorResult><Xml><Retorno><AbriuConnexao>1</AbriuConnexao><DataHoraServidor>20150304185154763</DataHoraServidor><DataHoraValida>1</DataHoraValida><Tabelas id="1"><OK>CONEXAO COM SUCESSO AO BANCO!!!!!!</OK><Banco>192.168.1.180</Banco></Tabelas><TOTAL>1</TOTAL><FechouConnexao>1</FechouConnexao></Retorno></Xml></xsd:ws_verifica_hora_servidorResult></SOAP-ENV:Body></SOAP-ENV:Envelope>
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 04 mars 2015 - 23:08
//Correção
// 20150304154034447 >= 20150304161034447 20150304154034447 <= 20150304151034447
IF Val(DataHoraMobileCompara) >= Val(DataHoraServidorMaior) OR Val(DataHoraMobileCompara) <= Val(DataHoraServidorMenor) THEN
DataHoraValida = False
ELSE
DataHoraValida = True
END
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 04 mars 2015 - 23:34
Créditos: Julio Pedroso