Lógica para programa que clacula a data de aniversário.
Estou tentado criar uma lógica para calcular a idade da
pessoa através dos dados de data mês e ano de nascimento.
gostaria que observasse meu código e me mostrasse o melhor caminho para chegar ao meu objetivo. O tmb o meu script tá dando erro de exception.é bem simples:
namespace Aniversario
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnCalc_Click(object sender, EventArgs e)
{
if (txtnome.Text == "" || txtano.Text == "" || txtdia.Text == "" || txtmes.Text == "")
{
lberro.Text = "ATENÇÃO: Todos os campos precisam ser preenchidos.";
}
else
{
try
{
DateTime agora = DateTime.Now;
int mes = agora.Month;
int dia = agora.Day;
int Idade, AuxIdade,aux2, aux3;
int AnoAtula = 2009;
aux2 = Convert.ToInt32(txtano.Text);
int mesnasc = Convert.ToInt32(txtmes);
int dianasc = Convert.ToInt32(txtdia);
AuxIdade = Convert.ToInt32(txtano.Text);
if (aux2 < 1900 || aux2 > 2009)
{
lberro.Text = "Você está digitando um ano forda do aceitável";
}
else
{
Idade = AnoAtula - AuxIdade;
lbresultado.Text = Convert.ToString(Idade);
if (mes == mesnasc)
{
if (dianasc > dia)
{
Idade += -1;
if (mes < mesnasc)
{
Idade += -1;
string resulFinal = Convert.ToString(Idade);
lbresulfinal.Text = resulFinal.ToString();
}
}
}
}
}
catch (Exception )
{
lberro.Text = "Ocorreu em erro";
}
}
}
private void btnlimpa_Click(object sender, EventArgs e)
{
txtnome.Text = "";
txtano.Text = "";
txtdia.Text = "";
txtmes.Text = "";
lberro.Text = "";
lbresultado.Text = "";
lberro.Text = "";
lberro2.Text = "";
}
private void txtnome_TextChanged(object sender, EventArgs e)
{
}
private void label4_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
outra coisa.
essa forma que estou fazendo conversão está correta?
gostaria que observasse meu código e me mostrasse o melhor caminho para chegar ao meu objetivo. O tmb o meu script tá dando erro de exception.é bem simples:
namespace Aniversario
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnCalc_Click(object sender, EventArgs e)
{
if (txtnome.Text == "" || txtano.Text == "" || txtdia.Text == "" || txtmes.Text == "")
{
lberro.Text = "ATENÇÃO: Todos os campos precisam ser preenchidos.";
}
else
{
try
{
DateTime agora = DateTime.Now;
int mes = agora.Month;
int dia = agora.Day;
int Idade, AuxIdade,aux2, aux3;
int AnoAtula = 2009;
aux2 = Convert.ToInt32(txtano.Text);
int mesnasc = Convert.ToInt32(txtmes);
int dianasc = Convert.ToInt32(txtdia);
AuxIdade = Convert.ToInt32(txtano.Text);
if (aux2 < 1900 || aux2 > 2009)
{
lberro.Text = "Você está digitando um ano forda do aceitável";
}
else
{
Idade = AnoAtula - AuxIdade;
lbresultado.Text = Convert.ToString(Idade);
if (mes == mesnasc)
{
if (dianasc > dia)
{
Idade += -1;
if (mes < mesnasc)
{
Idade += -1;
string resulFinal = Convert.ToString(Idade);
lbresulfinal.Text = resulFinal.ToString();
}
}
}
}
}
catch (Exception )
{
lberro.Text = "Ocorreu em erro";
}
}
}
private void btnlimpa_Click(object sender, EventArgs e)
{
txtnome.Text = "";
txtano.Text = "";
txtdia.Text = "";
txtmes.Text = "";
lberro.Text = "";
lbresultado.Text = "";
lberro.Text = "";
lberro2.Text = "";
}
private void txtnome_TextChanged(object sender, EventArgs e)
{
}
private void label4_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
outra coisa.
essa forma que estou fazendo conversão está correta?
Lorena Menelli
Curtidas 0
Respostas
[devmedia .net]
12/03/2009
Oi Lorena, tudo bem com você ?
Bom sua solução é bem mais simples do que imagina ok !
Se deseja calcular a idade de uma pessoa basta fazer o código abaixo..
Pode copiar e colar que vai funcionar...
protected void btnCalcular_Click(object sender, EventArgs e) { DateTime dtNascimento = new DateTime(int.Parse(txtAno.Text),int.Parse(txtMes.Text),int.Parse(txtDia.Text)); int idade = DateTime.Now.Year - dtNascimento.Year; if (DateTime.Now.Month < dtNascimento.Month || (DateTime.Now.Month == dtNascimento.Month && DateTime.Now.Day < dtNascimento.Day)) { //Diminui 1 da idade pois o c lculo ‚ feito em cima dos anos idade--; } Label1.Text = idade.ToString(); } Abraços Carlos Jr
protected void btnCalcular_Click(object sender, EventArgs e) { DateTime dtNascimento = new DateTime(int.Parse(txtAno.Text),int.Parse(txtMes.Text),int.Parse(txtDia.Text)); int idade = DateTime.Now.Year - dtNascimento.Year; if (DateTime.Now.Month < dtNascimento.Month || (DateTime.Now.Month == dtNascimento.Month && DateTime.Now.Day < dtNascimento.Day)) { //Diminui 1 da idade pois o c lculo ‚ feito em cima dos anos idade--; } Label1.Text = idade.ToString(); } Abraços Carlos Jr
GOSTEI 0
[devmedia .net]
12/03/2009
Oi Lorena,
conseguiu resolver o problema com o código que eu enviei...
Aguardo retorno
Abraços
Carlos Jr
GOSTEI 0
Lorena Menelli
12/03/2009
Oi Carlos, boa tarde
Muito bom mesmo, dessa forma o código fica bem simples e facíl.
nessa parte o dtNascimento recebe os dados de txtAno, txtMes, txtDia e depois disso vc criou uma variável idade que subtrai ano atual e dtnascimento( mais dtNascimento recebeu dados de 3 txt - dia, mes e ano). Como que o C# calcula isso, pq vc recupera apenas ano da instância com dtNacimento.year. Eu poderia por exemplo usar dtNascimento.Months ( para outro objetivo) que iria recuperar txtMes.text?
Por exemplo se eu usasse apenas um MaskedTextBox e no imput mask configurar para Short Date daria certo tmb?
Muito bom mesmo, dessa forma o código fica bem simples e facíl.
nessa parte o dtNascimento recebe os dados de txtAno, txtMes, txtDia e depois disso vc criou uma variável idade que subtrai ano atual e dtnascimento( mais dtNascimento recebeu dados de 3 txt - dia, mes e ano). Como que o C# calcula isso, pq vc recupera apenas ano da instância com dtNacimento.year. Eu poderia por exemplo usar dtNascimento.Months ( para outro objetivo) que iria recuperar txtMes.text?
Por exemplo se eu usasse apenas um MaskedTextBox e no imput mask configurar para Short Date daria certo tmb?
GOSTEI 0
Lorena Menelli
12/03/2009
Desculpe .. eu posso perguntar isso? pq me falaram que só posso fazer uma pergunta por chamada.
GOSTEI 0
[devmedia .net]
12/03/2009
Oi Lorena, fique tranquila..
na verdade você pode fazer mais perguntas sim,
mas deve ser dentro do mesmo problema, meu objetivo é resover seu problema..
Utilizei dessa maneira, pois era assim que estava no seu código, eu quis fazer da mesma maneira.
Se utilizar o maskedit também fucniona normalmente..
Pode utilizar a mesma lógica, inclusive utilzar os meses também,
ele vai fazer o calcula com meses..
Existe também um método
DateTime dt = new DateTime();
dt.Subtract(DateTime.Now) ; // Por exemplo
ele retorna um TimeSpan que é uma parte de data...
vamos super que utilizou o maskedit..
muda apenas a primeira linha
DateTime dtNascimento = DateTime.Parse(txtData.Text);
int idade = DateTime.Now.Year - dtNascimento.Year;
if (DateTime.Now.Month < dtNascimento.Month || (DateTime.Now.Month == dtNascimento.Month && DateTime.Now.Day < dtNascimento.Day))
{
//Diminui 1 da idade pois o c lculo ‚ feito em cima dos anos
idade--;
}
Label1.Text = idade.ToString();
Abraços
Carlos Jr
GOSTEI 0
Lorena Menelli
12/03/2009
ótimo .. muito obrigada..
endendi perfeitamente.
pode fechar ..
abraçu
endendi perfeitamente.
pode fechar ..
abraçu
GOSTEI 0
Lorena Menelli
12/03/2009
oi Carlos,
estou com mais uma duvida sobre esse problema. No meu pc o programa de calcular data de aniversário funcionou perfeitamente mais quando eu fui testar em outro pc ele não rodou. daí eu coloquio try e ocorreu uma exceção. Com isso resolvi criar esse mesmo codigo com WebForms mais alguma coisa está dando errado.
Year, Month, and Day parameters describe an un-representable DateTime. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.
Source Error:
Line 17: protected void Button1_Click(object sender, EventArgs e)
Line 18: {
Line 19: DateTime dtNascimento = new DateTime(int.Parse(txtdia.Text), int.Parse(txtmes.Text), int.Parse(txtano.Text));
Line 20:
Line 21: int idade = DateTime.Now.Year - dtNascimento.Year;
meu código
protected void Button1_Click(object sender, EventArgs e)
{
DateTime dtNascimento = new DateTime(int.Parse(txtdia.Text), int.Parse(txtmes.Text), int.Parse(txtano.Text));
int idade = DateTime.Now.Year - dtNascimento.Year;
if (DateTime.Now.Month < dtNascimento.Month || (DateTime.Now.Month == dtNascimento.Month && DateTime.Now.Day < dtNascimento.Day))
{
idade--;
}
lbresult.Text = idade.ToString();
}
txtdia, txtmes, txtano é DropDownList:
<asp:DropDownList ID="txtdia" runat="server">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
<asp:ListItem>5</asp:ListItem>
<asp:ListItem>6</asp:ListItem>
<asp:ListItem>7</asp:ListItem>
<asp:ListItem>8</asp:ListItem>
<asp:ListItem>9</asp:ListItem>
<asp:ListItem>10</asp:ListItem>
<asp:ListItem>11</asp:ListItem>
<asp:ListItem>12</asp:ListItem>
<asp:ListItem>13</asp:ListItem>
<asp:ListItem>14</asp:ListItem>
<asp:ListItem>15</asp:ListItem>
<asp:ListItem>16</asp:ListItem>
<asp:ListItem>18</asp:ListItem>
<asp:ListItem>19</asp:ListItem>
<asp:ListItem>20</asp:ListItem>
<asp:ListItem>21</asp:ListItem>
<asp:ListItem>22</asp:ListItem>
<asp:ListItem>23</asp:ListItem>
<asp:ListItem>24</asp:ListItem>
<asp:ListItem>25</asp:ListItem>
<asp:ListItem>26</asp:ListItem>
<asp:ListItem>27</asp:ListItem>
<asp:ListItem>28</asp:ListItem>
<asp:ListItem>29</asp:ListItem>
<asp:ListItem>30</asp:ListItem>
<asp:ListItem>31</asp:ListItem>
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
</td>
<td class="style3">
<asp:DropDownList ID="txtmes" runat="server">
<asp:ListItem Value="1">janeiro</asp:ListItem>
<asp:ListItem Value="2">fevereiro</asp:ListItem>
<asp:ListItem Value="3">marco</asp:ListItem>
<asp:ListItem Value="4">abril</asp:ListItem>
<asp:ListItem Value="5">maio</asp:ListItem>
<asp:ListItem Value="6">junho</asp:ListItem>
<asp:ListItem Value="7">junho</asp:ListItem>
<asp:ListItem Value="8">agosto</asp:ListItem>
<asp:ListItem Value="9">setembro</asp:ListItem>
<asp:ListItem Value="10">outubro</asp:ListItem>
<asp:ListItem Value="11">novembro</asp:ListItem>
<asp:ListItem Value="12">dezembro</asp:ListItem>
</asp:DropDownList>
</td>
<td>
<asp:DropDownList ID="txtano" runat="server">
<asp:ListItem>2008</asp:ListItem>
<asp:ListItem>2007</asp:ListItem>
<asp:ListItem>2006</asp:ListItem>
<asp:ListItem>2005</asp:ListItem>
<asp:ListItem>2004</asp:ListItem>
<asp:ListItem>2003</asp:ListItem>
<asp:ListItem>2001</asp:ListItem>
<asp:ListItem>2000</asp:ListItem>
<asp:ListItem>1999</asp:ListItem>
<asp:ListItem>1998</asp:ListItem>
<asp:ListItem>1997</asp:ListItem>
<asp:ListItem>1996</asp:ListItem>
<asp:ListItem>1995</asp:ListItem>
<asp:ListItem>1994</asp:ListItem>
<asp:ListItem>1993</asp:ListItem>
<asp:ListItem>1992</asp:ListItem>
<asp:ListItem>1991</asp:ListItem>
<asp:ListItem>1990</asp:ListItem>
<asp:ListItem>1989</asp:ListItem>
<asp:ListItem>1988</asp:ListItem>
<asp:ListItem>1987</asp:ListItem>
<asp:ListItem>1986</asp:ListItem>
<asp:ListItem>1985</asp:ListItem>
<asp:ListItem>1984</asp:ListItem>
<asp:ListItem>1984</asp:ListItem>
<asp:ListItem>1983</asp:ListItem>
<asp:ListItem>1982</asp:ListItem>
<asp:ListItem>1981</asp:ListItem>
<asp:ListItem>1980</asp:ListItem>
<asp:ListItem>1979</asp:ListItem>
<asp:ListItem>1978</asp:ListItem>
<asp:ListItem>1977</asp:ListItem>
<asp:ListItem>1976</asp:ListItem>
<asp:ListItem>1975</asp:ListItem>
<asp:ListItem>1974</asp:ListItem>
<asp:ListItem>1973</asp:ListItem>
<asp:ListItem>1972</asp:ListItem>
<asp:ListItem>1971</asp:ListItem>
<asp:ListItem>1970</asp:ListItem>
<asp:ListItem>1969</asp:ListItem>
<asp:ListItem>1968</asp:ListItem>
<asp:ListItem>1967</asp:ListItem>
<asp:ListItem>1966</asp:ListItem>
<asp:ListItem>1965</asp:ListItem>
<asp:ListItem>1964</asp:ListItem>
<asp:ListItem>1963</asp:ListItem>
<asp:ListItem>1962</asp:ListItem>
<asp:ListItem>1961</asp:ListItem>
<asp:ListItem>1960</asp:ListItem>
<asp:ListItem>1959</asp:ListItem>
<asp:ListItem>1958</asp:ListItem>
<asp:ListItem>1957</asp:ListItem>
<asp:ListItem>1956</asp:ListItem>
<asp:ListItem>1955</asp:ListItem>
<asp:ListItem>1954</asp:ListItem>
<asp:ListItem>1953</asp:ListItem>
<asp:ListItem>1952</asp:ListItem>
<asp:ListItem>1951</asp:ListItem>
<asp:ListItem>1950</asp:ListItem>
<asp:ListItem>1949</asp:ListItem>
<asp:ListItem>1948</asp:ListItem>
<asp:ListItem>1947</asp:ListItem>
<asp:ListItem>1946</asp:ListItem>
<asp:ListItem>1945</asp:ListItem>
<asp:ListItem>1943</asp:ListItem>
<asp:ListItem>1942</asp:ListItem>
<asp:ListItem>1941</asp:ListItem>
<asp:ListItem>1940</asp:ListItem>
<asp:ListItem>1939</asp:ListItem>
<asp:ListItem>1938</asp:ListItem>
<asp:ListItem>1937</asp:ListItem>
<asp:ListItem>1936</asp:ListItem>
<asp:ListItem>1935</asp:ListItem>
<asp:ListItem>1934</asp:ListItem>
<asp:ListItem>1933</asp:ListItem>
<asp:ListItem>1931</asp:ListItem>
<asp:ListItem>1930</asp:ListItem>
<asp:ListItem>1929</asp:ListItem>
<asp:ListItem>1928</asp:ListItem>
<asp:ListItem>1927</asp:ListItem>
<asp:ListItem>1926</asp:ListItem>
<asp:ListItem>1925</asp:ListItem>
<asp:ListItem>1924</asp:ListItem>
<asp:ListItem>1923</asp:ListItem>
<asp:ListItem>1922</asp:ListItem>
<asp:ListItem>1921</asp:ListItem>
<asp:ListItem>1920</asp:ListItem>
<asp:ListItem>1919</asp:ListItem>
<asp:ListItem>1918</asp:ListItem>
<asp:ListItem>1917</asp:ListItem>
<asp:ListItem>1916</asp:ListItem>
<asp:ListItem>1915</asp:ListItem>
<asp:ListItem>1914</asp:ListItem>
<asp:ListItem>1913</asp:ListItem>
<asp:ListItem>1912</asp:ListItem>
<asp:ListItem>1911</asp:ListItem>
<asp:ListItem>1910</asp:ListItem>
<asp:ListItem>1909</asp:ListItem>
<asp:ListItem>1908</asp:ListItem>
<asp:ListItem>1907</asp:ListItem>
<asp:ListItem>1906</asp:ListItem>
<asp:ListItem>1905</asp:ListItem>
<asp:ListItem>1904</asp:ListItem>
<asp:ListItem>1903</asp:ListItem>
<asp:ListItem>1902</asp:ListItem>
<asp:ListItem>1901</asp:ListItem>
<asp:ListItem>1900</asp:ListItem>
</asp:DropDownList>
Pode me explicar isso?
estou com mais uma duvida sobre esse problema. No meu pc o programa de calcular data de aniversário funcionou perfeitamente mais quando eu fui testar em outro pc ele não rodou. daí eu coloquio try e ocorreu uma exceção. Com isso resolvi criar esse mesmo codigo com WebForms mais alguma coisa está dando errado.
Year, Month, and Day parameters describe an un-representable DateTime. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.
Source Error:
Line 17: protected void Button1_Click(object sender, EventArgs e)
Line 18: {
Line 19: DateTime dtNascimento = new DateTime(int.Parse(txtdia.Text), int.Parse(txtmes.Text), int.Parse(txtano.Text));
Line 20:
Line 21: int idade = DateTime.Now.Year - dtNascimento.Year;
meu código
protected void Button1_Click(object sender, EventArgs e)
{
DateTime dtNascimento = new DateTime(int.Parse(txtdia.Text), int.Parse(txtmes.Text), int.Parse(txtano.Text));
int idade = DateTime.Now.Year - dtNascimento.Year;
if (DateTime.Now.Month < dtNascimento.Month || (DateTime.Now.Month == dtNascimento.Month && DateTime.Now.Day < dtNascimento.Day))
{
idade--;
}
lbresult.Text = idade.ToString();
}
txtdia, txtmes, txtano é DropDownList:
<asp:DropDownList ID="txtdia" runat="server">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
<asp:ListItem>5</asp:ListItem>
<asp:ListItem>6</asp:ListItem>
<asp:ListItem>7</asp:ListItem>
<asp:ListItem>8</asp:ListItem>
<asp:ListItem>9</asp:ListItem>
<asp:ListItem>10</asp:ListItem>
<asp:ListItem>11</asp:ListItem>
<asp:ListItem>12</asp:ListItem>
<asp:ListItem>13</asp:ListItem>
<asp:ListItem>14</asp:ListItem>
<asp:ListItem>15</asp:ListItem>
<asp:ListItem>16</asp:ListItem>
<asp:ListItem>18</asp:ListItem>
<asp:ListItem>19</asp:ListItem>
<asp:ListItem>20</asp:ListItem>
<asp:ListItem>21</asp:ListItem>
<asp:ListItem>22</asp:ListItem>
<asp:ListItem>23</asp:ListItem>
<asp:ListItem>24</asp:ListItem>
<asp:ListItem>25</asp:ListItem>
<asp:ListItem>26</asp:ListItem>
<asp:ListItem>27</asp:ListItem>
<asp:ListItem>28</asp:ListItem>
<asp:ListItem>29</asp:ListItem>
<asp:ListItem>30</asp:ListItem>
<asp:ListItem>31</asp:ListItem>
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
</td>
<td class="style3">
<asp:DropDownList ID="txtmes" runat="server">
<asp:ListItem Value="1">janeiro</asp:ListItem>
<asp:ListItem Value="2">fevereiro</asp:ListItem>
<asp:ListItem Value="3">marco</asp:ListItem>
<asp:ListItem Value="4">abril</asp:ListItem>
<asp:ListItem Value="5">maio</asp:ListItem>
<asp:ListItem Value="6">junho</asp:ListItem>
<asp:ListItem Value="7">junho</asp:ListItem>
<asp:ListItem Value="8">agosto</asp:ListItem>
<asp:ListItem Value="9">setembro</asp:ListItem>
<asp:ListItem Value="10">outubro</asp:ListItem>
<asp:ListItem Value="11">novembro</asp:ListItem>
<asp:ListItem Value="12">dezembro</asp:ListItem>
</asp:DropDownList>
</td>
<td>
<asp:DropDownList ID="txtano" runat="server">
<asp:ListItem>2008</asp:ListItem>
<asp:ListItem>2007</asp:ListItem>
<asp:ListItem>2006</asp:ListItem>
<asp:ListItem>2005</asp:ListItem>
<asp:ListItem>2004</asp:ListItem>
<asp:ListItem>2003</asp:ListItem>
<asp:ListItem>2001</asp:ListItem>
<asp:ListItem>2000</asp:ListItem>
<asp:ListItem>1999</asp:ListItem>
<asp:ListItem>1998</asp:ListItem>
<asp:ListItem>1997</asp:ListItem>
<asp:ListItem>1996</asp:ListItem>
<asp:ListItem>1995</asp:ListItem>
<asp:ListItem>1994</asp:ListItem>
<asp:ListItem>1993</asp:ListItem>
<asp:ListItem>1992</asp:ListItem>
<asp:ListItem>1991</asp:ListItem>
<asp:ListItem>1990</asp:ListItem>
<asp:ListItem>1989</asp:ListItem>
<asp:ListItem>1988</asp:ListItem>
<asp:ListItem>1987</asp:ListItem>
<asp:ListItem>1986</asp:ListItem>
<asp:ListItem>1985</asp:ListItem>
<asp:ListItem>1984</asp:ListItem>
<asp:ListItem>1984</asp:ListItem>
<asp:ListItem>1983</asp:ListItem>
<asp:ListItem>1982</asp:ListItem>
<asp:ListItem>1981</asp:ListItem>
<asp:ListItem>1980</asp:ListItem>
<asp:ListItem>1979</asp:ListItem>
<asp:ListItem>1978</asp:ListItem>
<asp:ListItem>1977</asp:ListItem>
<asp:ListItem>1976</asp:ListItem>
<asp:ListItem>1975</asp:ListItem>
<asp:ListItem>1974</asp:ListItem>
<asp:ListItem>1973</asp:ListItem>
<asp:ListItem>1972</asp:ListItem>
<asp:ListItem>1971</asp:ListItem>
<asp:ListItem>1970</asp:ListItem>
<asp:ListItem>1969</asp:ListItem>
<asp:ListItem>1968</asp:ListItem>
<asp:ListItem>1967</asp:ListItem>
<asp:ListItem>1966</asp:ListItem>
<asp:ListItem>1965</asp:ListItem>
<asp:ListItem>1964</asp:ListItem>
<asp:ListItem>1963</asp:ListItem>
<asp:ListItem>1962</asp:ListItem>
<asp:ListItem>1961</asp:ListItem>
<asp:ListItem>1960</asp:ListItem>
<asp:ListItem>1959</asp:ListItem>
<asp:ListItem>1958</asp:ListItem>
<asp:ListItem>1957</asp:ListItem>
<asp:ListItem>1956</asp:ListItem>
<asp:ListItem>1955</asp:ListItem>
<asp:ListItem>1954</asp:ListItem>
<asp:ListItem>1953</asp:ListItem>
<asp:ListItem>1952</asp:ListItem>
<asp:ListItem>1951</asp:ListItem>
<asp:ListItem>1950</asp:ListItem>
<asp:ListItem>1949</asp:ListItem>
<asp:ListItem>1948</asp:ListItem>
<asp:ListItem>1947</asp:ListItem>
<asp:ListItem>1946</asp:ListItem>
<asp:ListItem>1945</asp:ListItem>
<asp:ListItem>1943</asp:ListItem>
<asp:ListItem>1942</asp:ListItem>
<asp:ListItem>1941</asp:ListItem>
<asp:ListItem>1940</asp:ListItem>
<asp:ListItem>1939</asp:ListItem>
<asp:ListItem>1938</asp:ListItem>
<asp:ListItem>1937</asp:ListItem>
<asp:ListItem>1936</asp:ListItem>
<asp:ListItem>1935</asp:ListItem>
<asp:ListItem>1934</asp:ListItem>
<asp:ListItem>1933</asp:ListItem>
<asp:ListItem>1931</asp:ListItem>
<asp:ListItem>1930</asp:ListItem>
<asp:ListItem>1929</asp:ListItem>
<asp:ListItem>1928</asp:ListItem>
<asp:ListItem>1927</asp:ListItem>
<asp:ListItem>1926</asp:ListItem>
<asp:ListItem>1925</asp:ListItem>
<asp:ListItem>1924</asp:ListItem>
<asp:ListItem>1923</asp:ListItem>
<asp:ListItem>1922</asp:ListItem>
<asp:ListItem>1921</asp:ListItem>
<asp:ListItem>1920</asp:ListItem>
<asp:ListItem>1919</asp:ListItem>
<asp:ListItem>1918</asp:ListItem>
<asp:ListItem>1917</asp:ListItem>
<asp:ListItem>1916</asp:ListItem>
<asp:ListItem>1915</asp:ListItem>
<asp:ListItem>1914</asp:ListItem>
<asp:ListItem>1913</asp:ListItem>
<asp:ListItem>1912</asp:ListItem>
<asp:ListItem>1911</asp:ListItem>
<asp:ListItem>1910</asp:ListItem>
<asp:ListItem>1909</asp:ListItem>
<asp:ListItem>1908</asp:ListItem>
<asp:ListItem>1907</asp:ListItem>
<asp:ListItem>1906</asp:ListItem>
<asp:ListItem>1905</asp:ListItem>
<asp:ListItem>1904</asp:ListItem>
<asp:ListItem>1903</asp:ListItem>
<asp:ListItem>1902</asp:ListItem>
<asp:ListItem>1901</asp:ListItem>
<asp:ListItem>1900</asp:ListItem>
</asp:DropDownList>
Pode me explicar isso?
GOSTEI 0
[devmedia .net]
12/03/2009
Oi Lorena, tudo bem ?
Seu erro está simples de resolver...
Seu controle txtDia e txtMes é um DropDownList, portanto para acessar o item selecionado não se usa o txtDia.Text ou txtMes.Text , você deve utilizar : txtDia.SelectedItem.Text e txtMes.SelectedItem.Value (nesse caso é pq o número do mês está na propriedade value) e txtano.SelectedItem.Text Altere a chamada DateTime dtNascimento = new DateTime(int.Parse(txtdia.SelectedItem.Text), int.Parse(txtmes.Selected.Value), int.Parse(txtano.SelectedItem.Text)); Outra dica que lhe dou é... Se o controle de tela é um TextBox coloque o nome com o Prefixo txt, caso seja um dropdownlist coloque ddl , fica mais fácil interpretar o tipo do controle. Abraços Carlos Jr
Seu controle txtDia e txtMes é um DropDownList, portanto para acessar o item selecionado não se usa o txtDia.Text ou txtMes.Text , você deve utilizar : txtDia.SelectedItem.Text e txtMes.SelectedItem.Value (nesse caso é pq o número do mês está na propriedade value) e txtano.SelectedItem.Text Altere a chamada DateTime dtNascimento = new DateTime(int.Parse(txtdia.SelectedItem.Text), int.Parse(txtmes.Selected.Value), int.Parse(txtano.SelectedItem.Text)); Outra dica que lhe dou é... Se o controle de tela é um TextBox coloque o nome com o Prefixo txt, caso seja um dropdownlist coloque ddl , fica mais fácil interpretar o tipo do controle. Abraços Carlos Jr
GOSTEI 0
Lorena Menelli
12/03/2009
Naum de certo ...
Server Error in '/' Application.
Year, Month, and Day parameters describe an un-representable DateTime.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.
Source Error:
Line 17: protected void Button1_Click(object sender, EventArgs e) Line 18: { Line 19: DateTime dtNascimento = new DateTime(int.Parse(txtdia.SelectedItem.Text), int.Parse(txtmes.SelectedItem.Value), int.Parse(txtano.SelectedItem.Text)); Line 20: int idade = DateTime.Now.Year - dtNascimento.Year; Line 21:
Source File: C:\Documents and Settings\Administrador\Meus documentos\Visual Studio 2008\niver\niver\Default.aspx.cs Line: 19 protected void Button1_Click(object sender, EventArgs e) { DateTime dtNascimento = new DateTime(int.Parse(txtdia.SelectedItem.Text), int.Parse(txtmes.SelectedItem.Value), int.Parse(txtano.SelectedItem.Text)); int idade = DateTime.Now.Year - dtNascimento.Year; if (DateTime.Now.Month < dtNascimento.Month || (DateTime.Now.Month == dtNascimento.Month && DateTime.Now.Day < dtNascimento.Day)) { idade--; } lbresult.Text = idade.ToString(); }
Exception Details: System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.
Source Error:
Line 17: protected void Button1_Click(object sender, EventArgs e) Line 18: { Line 19: DateTime dtNascimento = new DateTime(int.Parse(txtdia.SelectedItem.Text), int.Parse(txtmes.SelectedItem.Value), int.Parse(txtano.SelectedItem.Text)); Line 20: int idade = DateTime.Now.Year - dtNascimento.Year; Line 21:
Source File: C:\Documents and Settings\Administrador\Meus documentos\Visual Studio 2008\niver\niver\Default.aspx.cs Line: 19 protected void Button1_Click(object sender, EventArgs e) { DateTime dtNascimento = new DateTime(int.Parse(txtdia.SelectedItem.Text), int.Parse(txtmes.SelectedItem.Value), int.Parse(txtano.SelectedItem.Text)); int idade = DateTime.Now.Year - dtNascimento.Year; if (DateTime.Now.Month < dtNascimento.Month || (DateTime.Now.Month == dtNascimento.Month && DateTime.Now.Day < dtNascimento.Day)) { idade--; } lbresult.Text = idade.ToString(); }
GOSTEI 0
[devmedia .net]
12/03/2009
Olá Lorena, você está passando os parâmetros errado..
Favor verificar na construção do DateTime os parâmetros...
Devem ser na ordem, ano mes dia...
Você está passando errado...
DateTime dtNascimento = new DateTime(int.Parse(ddlAno.SelectedItem.Text), int.Parse(ddlMes.SelectedItem.Value), int.Parse(ddlDia.SelectedItem.Text));
Abraços
Carlos Jr
GOSTEI 0
Lorena Menelli
12/03/2009
Ok Carlos, deu certo.
GOSTEI 0