none
Como buscar a data atual num site RRS feed

  • Pergunta

  • Olá, montei essa rotina que funciona certinho mas pega a data do sistema, alguém poderia me mostrar uma rotina que pegue as variáveis "dia", "mes" e "ano" de um site que forneça a data de Brasília?

    Public Class Form1

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

            Dim dia As String = Date.Now.Day.ToString

            Dim mes As String = Date.Now.Month.ToString

            Dim ano As String = Date.Now.Year.ToString

            Dim dataAtual, dataLim As DateTime

            Dim diasUso As TimeSpan

            dataAtual = Convert.ToDateTime(dia + "/" + mes + "/" + ano)

            dataLim = New Date(2019, 9, 5)

            diasUso = dataLim.Subtract(dataAtual)

            If dataAtual < dataLim Then

                MessageBox.Show("Este aplicativo ainda tem " + diasUso.Days.ToString() & " dias de uso.")

            Else

                diasUso = dataAtual.Subtract(dataLim)

                MessageBox.Show("Este aplicativo já venceu seu prazo de uso há " + diasUso.Days.ToString() & " dias e será encerrado.")

                End

            End If

        End Sub

    End Class


    domingo, 29 de setembro de 2019 22:24

Respostas

  • Olá, bem não é necessário pegar a data de algum site pois a própria biblioteca do .NET tem uma função para converter datas, fiz pequenas alterações no seu código, por exemplo no lugar de pegar a data por dia mês e ano separados, peguei a data inteira já que no futuro você acabou convertendo, outras modificações foram  comentadas no código.

    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            'Pega TimeZone de Brasilia
            Dim timeZoneBrasilia As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("E. South America Standard Time")
    
            'Converte a data do seu sistema para o horario de Brasilia
            Dim dataAtual As DateTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, timeZoneBrasilia)
    
            Dim dataLim As DateTime
    
            Dim diasUso As TimeSpan
    
            dataLim = New Date(2019, 9, 5)
    
            diasUso = dataLim.Subtract(dataAtual)
    
            If dataAtual < dataLim Then
    
                MessageBox.Show("Este aplicativo ainda tem " + diasUso.Days.ToString() & " dias de uso.")
    
            Else
    
                diasUso = dataAtual.Subtract(dataLim)
    
                MessageBox.Show("Este aplicativo já venceu seu prazo de uso há " + diasUso.Days.ToString() & " dias e será encerrado.")
    
                End
    
            End If
        End Sub
    End Class

    • Marcado como Resposta IgorFKModerator quarta-feira, 2 de outubro de 2019 14:25
    segunda-feira, 30 de setembro de 2019 11:30

Todas as Respostas

  • Olá, bem não é necessário pegar a data de algum site pois a própria biblioteca do .NET tem uma função para converter datas, fiz pequenas alterações no seu código, por exemplo no lugar de pegar a data por dia mês e ano separados, peguei a data inteira já que no futuro você acabou convertendo, outras modificações foram  comentadas no código.

    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            'Pega TimeZone de Brasilia
            Dim timeZoneBrasilia As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("E. South America Standard Time")
    
            'Converte a data do seu sistema para o horario de Brasilia
            Dim dataAtual As DateTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, timeZoneBrasilia)
    
            Dim dataLim As DateTime
    
            Dim diasUso As TimeSpan
    
            dataLim = New Date(2019, 9, 5)
    
            diasUso = dataLim.Subtract(dataAtual)
    
            If dataAtual < dataLim Then
    
                MessageBox.Show("Este aplicativo ainda tem " + diasUso.Days.ToString() & " dias de uso.")
    
            Else
    
                diasUso = dataAtual.Subtract(dataLim)
    
                MessageBox.Show("Este aplicativo já venceu seu prazo de uso há " + diasUso.Days.ToString() & " dias e será encerrado.")
    
                End
    
            End If
        End Sub
    End Class

    • Marcado como Resposta IgorFKModerator quarta-feira, 2 de outubro de 2019 14:25
    segunda-feira, 30 de setembro de 2019 11:30
  • Valeu Magno, acho que é mais ou menos isso que eu estava querendo. 

    Obrigado e abraço / Durval

     
    terça-feira, 1 de outubro de 2019 04:45
  • Magno, a intenção de pegar uma data de fora do PC (não do sistema) seria para evitar que algum usuário mal intencionado altere a data do PC e assim burlar um aplicativo qualquer já vencido.

    Compilei e rodei a sua rotina deixando a data (10/10/2019) como dataLimite na rotina. Como hoje é 02/10/2019, o MsgBox dá a seguinte mensagem: "Este aplicativo ainda tem 7 dias de uso.", até ai tudo ok.

    Alterei a data do meu PC para 12/10/2019, ao rodar novamente a sua rotina, o MsgBox dá a outra mensagem, dizendo que o aplicativo já venceu há 1 dia, é isso que eu NÃO queria que acontecesse, a rotina deveria atualizar a data do meu PC e continuar dando aquele primeiro MsgBox que diz:   "Este aplicativo ainda tem 7 dias de uso."

    O que será que tem que fazer para resolver isso?  Se souber, me dá uma força!

    Grato/Durval

    quarta-feira, 2 de outubro de 2019 23:45
  • Para testar isso que escrevi, basta alterar a data e hora do seu PC e rodar essa sua rotina, ela teria que alterar a data e hora no seu PC, mas no meu não altera.

    quarta-feira, 2 de outubro de 2019 23:53