• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vasco16

Subtrair data

17 mensagens neste tópico

Boas pessoal, gostaria de saber se é possivel subtrair anos a uma data?

tenho este código


                Dim hoje As Date = Today
                hoje = hoje.AddYears(18)

                If ((datanascimentotext.Text) - (hoje)) < Today Then
                    MsgBox("O cliente deve ter mais de 18 anos")
                    Exit Sub
                End If

mas nao funciona .. diz que nao consegue converter os dados..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes fazer assim (por exemplo):

        Dim dataNascimento As DateTime = DateTime.Parse(datanascimentotext.Text)

        If Now.Date.Subtract(dataNascimento).TotalDays < (18 * 365) Then
            MsgBox("O cliente deve ter mais de 18 anos")
            Exit Sub
        End If

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes fazer assim (por exemplo):

        Dim dataNascimento As DateTime = DateTime.Parse(datanascimentotext.Text)

        If Now.Date.Subtract(dataNascimento).TotalDays < (18 * 365) Then
            MsgBox("O cliente deve ter mais de 18 anos")
            Exit Sub
        End If

nao funciona.. será porque tenho a data numa maskedtextbox?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tb podes fazer data.AddYears(-18)

é uma solução mas só me avalia o ano.. ou seja posso ainda não ter os 18 anos mas como estou no ano que faço os 18 o programa deixa-me passar..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

        Dim LimiteLegal As Date = New Date(1991, 5, 13).AddYears(18)
        Dim TS As TimeSpan = Date.Today - LimiteLegal

        If TS.Days > 0 Then
            MsgBox("O cliente deve ter mais de 18 anos!")
            Exit Sub
        End If

Onde o New Date(1991,5,13) é substituído por uma variável do tipo date a representar a data de nascimento do gajo.

Acabei de o escrever e testar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

        Dim LimiteLegal As Date = New Date(1991, 5, 13).AddYears(18)
        Dim TS As TimeSpan = Date.Today - LimiteLegal

        If TS.Days > 0 Then
            MsgBox("O cliente deve ter mais de 18 anos!")
            Exit Sub
        End If

Onde o New Date(1991,5,13) é substituído por uma variável do tipo date a representar a data de nascimento do gajo.

Acabei de o escrever e testar.

funciona com maskedtextbox?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

funciona com maskedtextbox?

MessageBox.Show(datanascimentotext.Text) o que é que dá ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

MessageBox.Show(datanascimentotext.Text) o que é que dá ?

se nao tiver la nenhuma data aparece: - -

se tiver uma data aparece por exemplo 01-01-1990

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se nao tiver la nenhuma data aparece: - -

se tiver uma data aparece por exemplo 01-01-1990

Então o código que te mostrei funciona!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta assim:

    If String.IsNullOrEmpty(MaskedTextBox1.Text.Trim) = False Then
            If IsDate(MaskedTextBox1.Text.Trim) = True Then
                Dim LimitLegal As Date = CDate(MaskedTextBox1.Text.Trim).AddYears(18)
                ...
            End If
     End If

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ribeiro55

    Dim LimiteLegal As Date = New Date(datanascimentotext.Text).AddYears(18)

                Dim TS As TimeSpan = Date.Today - LimiteLegal

                If TS.Days > 0 Then

                    MsgBox("O cliente deve ter mais de 18 anos!")

                    Exit Sub

                End If

dá erro, diz que é impossivel converter a cadeira para o tipo long

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta assim:

    If String.IsNullOrEmpty(MaskedTextBox1.Text.Trim) = False Then
            If IsDate(MaskedTextBox1.Text.Trim) = True Then
                Dim LimitLegal As Date = CDate(MaskedTextBox1.Text.Trim).AddYears(18)
                ...
            End If
     End If

com este código ele nunca me sai do ciclo..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Explica lá porque o meu não funciona ?

com este código ele nunca me sai do ciclo..

E qual ciclo ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Explica lá porque o meu não funciona ?

pois agora está a funcionar :S mas ontem nao sei porquê nao estava a avaliar bem..

E qual ciclo ?

o ciclo do if, deve estar a avaliar mal..

Mas com a soluçaõ do Jpaulino o problema está resolvido.. peço desculpa por tal confusão :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora