Bom tarde Ferahol.
Seja bem-vindo ao fórum da comunidade do AutoHotkey.
Para comparar datas sugiro usar sempre o formato AAAAMMDD.
Este formato é composto de:
Ano com 4 dígitos, seguido do mês com 2 dígitos, seguido do dia com 2 dígitos.
Exemplo: 20190827 -> 27 de agosto de 2019
A razão de usar esse formato é que uma data maior sempre se converte em um número maior, então a comparação pode ser direto na expressão usando os comparadores maior-que, menor-que e igual-a.
Depois disso, comparar uma data com a data de validade é algo tão simples quanto usar uma expressão condicional if.
No código abaixo a data atual é obtida do relógio do windows (usando as variáveis embutidas A_YYYY, A_MM e A_DD) e depois comparada com a data 30/08/2019. Se a comparação for maior, o script estará vencido. Se não for, estará válido. Você pode testar o código mudando a data do windows no seu computador.
Code: Select all
DATA_ATUAL := A_YYYY . A_MM . A_DD
DATA_VALIDADE := "20190830"
If (DATA_ATUAL > DATA_VALIDADE)
{
msgbox % "Script vencido!"
}
else
{
msgbox % "Script dentro da validade !"
}
O único problema do código acima você já deve ter percebido: basta mudar a data do computador para o script voltar a ser válido. Então se você está preocupado com essa possibilidade sugiro usar uma data obtida online. Isso vai fazer seu script necessitar de conexão à internet, portanto você deve decidir se vale a pena ou não.
Code: Select all
FileDelete, %A_ScriptDir%/DVer.txt
URLDownloadToFile, http://worldclockapi.com/api/json/est/now, %A_ScriptDir%/DVer.txt
FileRead, ARQUIVO_BAIXADO, %A_ScriptDir%/DVer.txt
RegExMatch(ARQUIVO_BAIXADO, "\d\d\d\d-\d\d-\d\d", DATA_ATUAL)
DATA_ATUAL_FORMATADA := SubStr(DATA_ATUAL, 1, 4) . SubStr(DATA_ATUAL, 6, 2) . SubStr(DATA_ATUAL, 9, 2)
If DATA_ATUAL_FORMATADA is not time
{
msgbox % "Não foi possível verificar a validade"
Return
}
If (DATA_ATUAL_FORMATADA < "20190831") ; Use um dia a mais, do contrário a validade encerra às 00:00 do dia 30.
{
msgbox % "Script válido!"
Return
}
else
{
msgbox % "Script já venceu !!"
Return
}
No código acima, a rotina para o caso do script ser válido seria escrita entre o msgbox % "Script válido" e o return seguinte. Como a data é obtida online, a maneira que você teria de testar um script desse é alterar a data que você está comparando no próprio código e ver se a comparação muda para vencido. O script acima necessita de conexão à internet e depende de um serviço online hospedado em worldclockapi.com, mas creio que isso não é um problema, pois dificilmente este serviço vá sumir nos próximos 3 dias (se você caiu aqui nesse tópico meses depois deste post, vale a pena testar se o script ainda funciona !).
Espero ter ajudado, se tiver algum problema para implementar, basta postar abaixo
Bom tarde Ferahol.
Seja bem-vindo ao fórum da comunidade do AutoHotkey.
Para comparar datas sugiro usar sempre o formato AAAAMMDD.
Este formato é composto de:
Ano com 4 dígitos, seguido do mês com 2 dígitos, seguido do dia com 2 dígitos.
Exemplo: 20190827 -> 27 de agosto de 2019
A razão de usar esse formato é que uma data maior sempre se converte em um número maior, então a comparação pode ser direto na expressão usando os comparadores maior-que, menor-que e igual-a.
Depois disso, comparar uma data com a data de validade é algo tão simples quanto usar uma expressão condicional if.
:arrow: No código abaixo a data atual é obtida do relógio do windows (usando as variáveis embutidas A_YYYY, A_MM e A_DD) e depois comparada com a data 30/08/2019. Se a comparação for maior, o script estará vencido. Se não for, estará válido. Você pode testar o código mudando a data do windows no seu computador.
[code]DATA_ATUAL := A_YYYY . A_MM . A_DD
DATA_VALIDADE := "20190830"
If (DATA_ATUAL > DATA_VALIDADE)
{
msgbox % "Script vencido!"
}
else
{
msgbox % "Script dentro da validade !"
}[/code]
:arrow: O único problema do código acima você já deve ter percebido: basta mudar a data do computador para o script voltar a ser válido. Então se você está preocupado com essa possibilidade sugiro usar uma data obtida online. Isso vai fazer seu script necessitar de conexão à internet, portanto você deve decidir se vale a pena ou não.
[code]FileDelete, %A_ScriptDir%/DVer.txt
URLDownloadToFile, http://worldclockapi.com/api/json/est/now, %A_ScriptDir%/DVer.txt
FileRead, ARQUIVO_BAIXADO, %A_ScriptDir%/DVer.txt
RegExMatch(ARQUIVO_BAIXADO, "\d\d\d\d-\d\d-\d\d", DATA_ATUAL)
DATA_ATUAL_FORMATADA := SubStr(DATA_ATUAL, 1, 4) . SubStr(DATA_ATUAL, 6, 2) . SubStr(DATA_ATUAL, 9, 2)
If DATA_ATUAL_FORMATADA is not time
{
msgbox % "Não foi possível verificar a validade"
Return
}
If (DATA_ATUAL_FORMATADA < "20190831") ; Use um dia a mais, do contrário a validade encerra às 00:00 do dia 30.
{
msgbox % "Script válido!"
Return
}
else
{
msgbox % "Script já venceu !!"
Return
}[/code]
:arrow: No código acima, a rotina para o caso do script ser válido seria escrita entre o msgbox % "Script válido" e o return seguinte. Como a data é obtida online, a maneira que você teria de testar um script desse é alterar a data que você está comparando no próprio código e ver se a comparação muda para vencido. O script acima necessita de conexão à internet e depende de um serviço online hospedado em worldclockapi.com, mas creio que isso não é um problema, pois dificilmente este serviço vá sumir nos próximos 3 dias (se você caiu aqui nesse tópico meses depois deste post, vale a pena testar se o script ainda funciona !).
Espero ter ajudado, se tiver algum problema para implementar, basta postar abaixo :thumbup: