none
Data Atual RRS feed

  • Pergunta

  • Boa tarde,

    Preciso de saber se existe uma foma de pegar a data atual de brasília por exemplo em um programa.

    Pois se eu pegar a data do computador fica vulnerável, se tiver uma forma de eu pegar a data da internet, por exemplo, ficaria mais fácil.

    O sistema é local, desktop. 

    Precisaria pelo menos pegar a data real, pelo menos uma vez que o programa for executável, pra conferir se o cliente está dentro da chave de registro, pois atualmente, se o cliente muda a data, para uma menor por exemplo, o programa trava, porém o sistema pegando pela data real, sem ser a do computador, ele pode mudar a data do computador, que não vai ter problemas. E ficará mais seguro.

    Obrigado.


    terça-feira, 12 de abril de 2016 17:57

Respostas

  • Oi Mariana, desculpa a demora pra te responder. Mas o dia hj esta punk.

    Procure por System.Environment.Tickcount.

    Ai vc vai poder acessar a placa mãe da tua maquina, não impede do teu cliente ir no setup da placa e mudar a data.

    Mas é mais uma solução. 

    Att, wsti.

    • Marcado como Resposta Mariana C. Costa quarta-feira, 13 de abril de 2016 11:17
    terça-feira, 12 de abril de 2016 20:14

Todas as Respostas

  • Mariana, seu sistema sempre vai estar "online". Pq pra fazer isso vc tem que garantir que o programa só ira funcionar se a internet estiver habilitada. 

    Aqui tem uma solução, para pegar a hora da internet.

     http://stackoverflow.com/a/12150289/916193

    Att, wsti. 

    • Editado Wsti terça-feira, 12 de abril de 2016 18:05
    terça-feira, 12 de abril de 2016 18:02
  • Sim, caso não tenha internet, vou fazer um if para ainda sim continuar seguro.

    Existe alguma forma sem precisar de internet ? alguma classe ? algo do tipo ? Porque só pela data do computador não fica seguro, por enquanto ele trava, se mudar a data do computador, pois compara ao registro do LOG, existindo alguma forma de pegar da internet, ou alguma forma segura, eu não preciso travar quando ele mudar a data do PC.

    terça-feira, 12 de abril de 2016 18:05
  • Boa tarde,

    public static DateTime GetNistTime()
    {
        DateTime dateTime = DateTime.MinValue;
    
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://nist.time.gov/actualtime.cgi?lzbc=siqm9b");
        request.Method = "GET";
        request.Accept = "text/html, application/xhtml+xml, */*";
        request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)";
        request.ContentType = "application/x-www-form-urlencoded";
        request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); //No caching
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        if (response.StatusCode == HttpStatusCode.OK)
        {
            StreamReader stream = new StreamReader(response.GetResponseStream());
            string html = stream.ReadToEnd();//<timestamp time=\"1395772696469995\" delay=\"1395772696469995\"/>
            string time = Regex.Match(html, @"(?<=\btime="")[^""]*").Value;
            double milliseconds = Convert.ToInt64(time) / 1000.0;
            dateTime = new DateTime(1970, 1, 1).AddMilliseconds(milliseconds).ToLocalTime();
        }
    
        return dateTime;
    }

    http://stackoverflow.com/questions/6435099/how-to-get-datetime-from-the-internet

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    terça-feira, 12 de abril de 2016 18:07
  • Uma outra solução é buscar a hora do banco de dados caso você esteja usando.

    No caso você teria que fazer um SELECT TO_CHAR(TO_DATE(SYSDATE,'DD/MM/YYYY')) FROM DUAL.

    Assim você sempre irá pegar a data do banco e não da máquina.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    terça-feira, 12 de abril de 2016 18:27
  • Luan, o banco é local, na maioria dos casos é utilizados o mdf, e para empresa maiores utilizamos o sql server.
    terça-feira, 12 de abril de 2016 18:33
  • Oi Mariana, desculpa a demora pra te responder. Mas o dia hj esta punk.

    Procure por System.Environment.Tickcount.

    Ai vc vai poder acessar a placa mãe da tua maquina, não impede do teu cliente ir no setup da placa e mudar a data.

    Mas é mais uma solução. 

    Att, wsti.

    • Marcado como Resposta Mariana C. Costa quarta-feira, 13 de abril de 2016 11:17
    terça-feira, 12 de abril de 2016 20:14
  • Muito obrigado pela ajuda, vou pesquisar mais sobre o assunto.

    quarta-feira, 13 de abril de 2016 11:16