Página 1 de 1

Atualizar data e hora do PC

Enviado: 12 Jan 2008 09:54
por Netavin
Bom dia amigos!!
Procurei por uma solução nos post´s sobre o assunto mas não encontrei.
Ontem tive uma experiência enquanto orientava o uso do programa. O sistema não aceitava a data que eu digitava(data do dia atual). De imediato verifiquei qua a data do PC estava atrazada em 3 dias. Após a atualização ficou td bem.
Então, gostaria de saber se é possível, na abertura do sistema, pedir ao usuário para verificar se a data e horas estão atualizadas. Ou se há outro método de se corrigir isto.

Abraço a todos e bom final-de-semana.

Netavin

Enviado: 12 Jan 2008 15:09
por Maligno
Eu estou usando a biblioteca WAPI (script PHP) pra acessar a internet e pegar data e hora do meu servidor. Não sei se a data e hora são exatas, mas preciso apenas de uma data mais "confiável" para fazer controle de licenciamento. Funciona 100%.

Enviado: 12 Jan 2008 15:19
por Maligno
Aliás, se quiser fazer um teste, clique aqui para ver no seu browser a hora e data do meu servidor no formato YYYYMMDD;HHMMSS.

Isso pelo seu browser. Se for querer testar pela biblioteca WAPI seria bem simples. Exemplo:

Código: Selecionar todos

set date british
set century off
*
if IsInternet()
   cSrv := "buzinello.com"
   cRet := ""
   if DLoadFile("www."+cSrv+"/tmp/php/servtime.php",@cRet)
      ? "No servidor " + cSrv + ":"
      ? "--------------------------"
      ? "Date: " + DtoC(StoD(Left(cRet,8)))
      ? "Time: " + Transf(Right(cRet,6),"@R 99:99:99")
   else
      ? "ERRO desconhecido!"
   end
else
   ? "ERRO: desconectado ou bloqueado pelo firewall!"
end
?
A função IsInternet() verifica se existe uma conexão com a internet e a função DLoadFile() faz o download de um arquivo qualquer. No presente caso, o script PHP é interpretado pelo servidor e transformado numa página HTML, cujo conteúdo é descarregado para a variável cRet (se fosse preciso, também poderia ser armazenado num arquivo).

O script PHP, caso queira ver, é a parte mais simples de todas:

Código: Selecionar todos

<?php echo(date("Ymd;His")); ?>

Enviado: 12 Jan 2008 15:30
por alaminojunior
Se vc desconfia da maquina que não está mantendo data e hora, troque a bateria da placa-mãe.
Se mesmo assim não fununciar, ponha um batch para fazer o acerto logo no inicio.
Ou pegando carona na dica do Maligno, se for uma maquina cliente, sincronize o horario dela com um servidor, também com o uso de um batch, logo após logar na rede.

Código: Selecionar todos

net time \\servidor /set /yes

Enviado: 12 Jan 2008 16:30
por Maligno
Se for pro usuário consertar a data e hora na execução do programa, uma idéia é apresentar a ele uma janela com data e hora atuais com a opção de alteração. As funções SetDate() e SetTime() da CATools alteram o CMOS, mantendo os valores. Mas se há um atraso constante, talvez a bateria esteja nas últimas. Aí é melhor trocar de uma vez.

Enviado: 14 Jan 2008 09:19
por Netavin
Bom dia amigos !
Obrigado pelas dicas!
Tenham todos uma ótima semana!

[ ]´s

Netavin

Enviado: 14 Jan 2008 10:54
por Netavin
E aí Malígno !!

Meu amigo, fiz um pequeno teste no meu PC desta forma:
Set date brit
Dat:=date()
hr :="99:99"

Tone(1700,1)
@ 10,20 say "Verifique se a data está correta!"
@ 11,30 say date()

If Alert("Está correta ?",{"sim","nao"}) # 1
@ 10,20 clear to 11,60
@ 10,20 say "Informe a data correta: " get dat
Read
SetDate(dat)
Endif

Tone(1700,1)
@ 10,20 clear to 11,60
@ 10,20 say "Verifique se a hora está correta!"
@ 11,30 say time()

If Alert("Está correta ?",{"sim","nao"}) # 1
@ 10,20 clear to 11,60
@ 10,20 say "Informe a hora correta: " get hr pict "99:99"
Read
SetTime(hr)
Endif

quit

Porém a data e hora do sistema não se altera. Estou fazendo besteira ?

[ ]´s
Netavin

Enviado: 14 Jan 2008 11:08
por Maligno
Acabei de testar. Por algum estranho motivo, SetTime() não funcionou no meu XP Pro. Mas SetDate() funcionou certo.

Olhando seu código, percebi que a variável dat está sendo preenchida corretamente, e do tipo date. Só faltou o segundo parâmetro da função SetDate(), que ao que parece, serve para atualizar o CMOS. Tente informar TRUE.

Enviado: 14 Jan 2008 14:06
por Netavin
ok Malígno!
Obrigado!
Vou correr atrás.

[]´s

Netavin