PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 25 → RELOGIO ATOMICO - COM PRECISAO ATOMICA
RELOGIO ATOMICO - COM PRECISAO ATOMICA
Started by Boller, Jul., 26 2024 2:23 AM - No answer
Registered member
3,694 messages
Popularité : +175 (223 votes)
Posted on July, 26 2024 - 2:23 AM
// Summary: <specify the procedure action>
// Syntax:
//GetRelogioAtomico ()
//
// Parameters:
// None
// Example:
// <Specify a usage example>
//
// Return value:
PROCEDURE GetRelogioAtomico()

// Define a URL da API para o fuso horário de Brasília
sUrl is string = "http://worldtimeapi.org/api/timezone/America/Sao_Paulo"

//exemplo
//{
// "abbreviation": "-03",
// "client_ip": "138.204.25.129",
// "datetime": "2024-07-25T21:39:02.036358-03:00",
// "day_of_week": 4,
// "day_of_year": 207,
// "dst": false,
// "dst_from": null,
// "dst_offset": 0,
// "dst_until": null,
// "raw_offset": -10800,
// "timezone": "America/Sao_Paulo",
// "unixtime": 1721954342,
// "utc_datetime": "2024-07-26T00:39:02.036358+00:00",
// "utc_offset": "-03:00",
// "week_number": 30
//}

dtDateTime is DateTime //atomica
dtDataHora is DateTime //relogio do computador

IF HTTPRequest(sUrl) = True THEN

vRESULTADO is string = HTTPGetResult()

// Analisa a resposta JSON
JSONResponse is JSON

JSONResponse = vRESULTADO

// Extrai a data e hora
// "2024-07-25T21:39:02.036358-03:00"

Hora is string = Middle(JSONResponse.datetime,12,9)
Hora = Replace(Hora,":","")
Hora = Replace(Hora,"-","")

dtDateTime = Middle(JSONResponse.datetime,1,4)+Middle(JSONResponse.datetime,6,2)+Middle(JSONResponse.datetime,9,2)+Hora

dtDataHora = DateSys()+TimeSys()

IF Middle(dtDateTime,1,12) <> Middle(dtDataHora,1,12) THEN

datacerta is string = DateToString(dtDateTime,"DD/MM/YYYY")
Horacerta is string = TimeToString(dtDateTime,"HH:MM:SS")
AMPM is string
IF Val(Middle(Horacerta,1,2)) <= 12 THEN
AMPM = "AM"
ELSE
AMPM = "PM"
END

Info("Data do computador esta errada!")
Info(dtDateTime,dtDataHora)
Info("PowerShell: Set-Date '[%datacerta%] [%Horacerta%] [%AMPM%]'")

ELSE

Info("Data e Hora esta sincronizada")

END


ELSE
Error("Falha ao obter a data e hora atual.")
END

RESULT dtDateTime

//Aqui está uma explicação passo a passo do código:
//
//Definir a URL da API: A URL http://worldtimeapi.org/api/timezone/America/Sao_Paulo é usada para obter a hora atual de Brasília.
//
//Solicitação HTTP GET: A função HTTPRequest envia uma solicitação GET para a URL especificada.
//
//Verificação de Erro: O bloco IF ErrorOccurred = False verifica se a solicitação HTTP foi bem-sucedida.
//
//Análise da Resposta JSON: A resposta JSON da API é convertida para uma estrutura JSON usando JSONToVariant.
//
//Extração da Data e Hora: A data e hora são extraídas da resposta JSON.
//
//Conversão para DateTime: A string de data e hora é convertida para um tipo DateTime.
//
//Exibição da Data e Hora: A data e hora são exibidas usando a função Info.
//
//Certifique-se de incluir as bibliotecas necessárias para manipulação de JSON e HTTP em seu projeto Windev.
//
//Se precisar de mais alguma ajuda ou explicação, sinta-se à vontade para perguntar!


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Message modified, July, 26 2024 - 3:14 AM