Páginas

quinta-feira, 5 de março de 2015

[WX] Trabalhando com datas, horas, verificando diferenças entre elas e somando minutos

http://forum.pcsoft.fr/pt-BR/pcsoft.br.windev/149-trabalhando-com-datas-horas-verificando-diferencas-entre-elas/read.awp






Membro registado
761 mensagems

Publicado em março, 04 2015 - 10:50 PM

###############################################################
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(DataHoraMobileCompara) >= Val(DataHoraServidorMaior) OR Val(DataHoraMobileCompara) <= 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)

Nenhum comentário:

Postar um comentário