Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

vasco16

Subtrair data

Mensagens Recomendadas

vasco16    0
vasco16

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..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vasco16    0
vasco16

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vasco16    0
vasco16

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..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

        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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vasco16    0
vasco16

        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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vasco16    0
vasco16

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
PNDmartins    0
PNDmartins

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vasco16    0
vasco16

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vasco16    0
vasco16

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..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vasco16    0
vasco16

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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade