通过输入出生日期转换失败来计算年龄 [英] Calculating age by entering date of birth conversion failure
问题描述
嗨
我已经完成以下代码来填写出生日期来计算我的年龄,我得到转换失败问题
我尝试过:
Hi
I have done the below code to calculate my age by filling the date of birth,I get the conversion failure problem
What I have tried:
<pre> protected void Calendar1_SelectionChanged1(object sender, EventArgs e)
{
txtDob.Text = Calendar1.SelectedDate.ToString();
Calendar1.Visible = false;
int year = DateTime.Now.Year - Calendar1.SelectedDate.Year;
int months = DateTime.Now.Month - Calendar1.SelectedDate.Month;
string ageval = ((year - 1) + " years" + (-12 - months) + " months");
if (months > 12)
{
year = year + 1;
}
int value = int.Parse(ageval);
value = (ToString(txtAge.Text)) ;
Name varchar(50),Department varchar (50),Salary int
DOJ datetime,DOB datetime,Age int,Country varchar(50),Stat varchar(50),Phone bigint,
Email varchar(100),Pincode bigint)
推荐答案
嗯......这是一些奇怪的代码。
Um ... that's some odd code.
string ageval = ((year - 1) + " years" + (-12 - months) + " months");
...
int value = int.Parse(ageval);
value = (ToString(txtAge.Text)) ;
所以你加载一个字符串故意使用非整数值,然后尝试将其转换为整数,然后尝试使用某个随机用户输入的字符串ified版本进行覆盖。当它失败时你会感到惊讶吗?它甚至都不会编译,除非你的ToString方法命名非常非常糟糕!
看看这个:与年龄一起工作:它与TimeSpan不同! [ ^ ] - 它为您完成所有legwork。
So you load a string with a non-integer value deliberately, then try to convert that to an integer, which you then try to overwrite with a string-ified version of some random user input. And you are surprised when it fails? It won't even compile, unless your ToString method is very, very badly named!
Have a look at this: Working with Age: it's not the same as a TimeSpan![^] - it does all the "legwork" for you.
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
int year =Convert.ToInt32(DateTime.Now.Year);
int month = Convert.ToInt32(DateTime.Now.Month);
int day = Convert.ToInt32(DateTime.Now.Day);
int dobYear = Calendar1.SelectedDate.Year;
int dobMonth = Calendar1.SelectedDate.Month;
int dobDate = Calendar1.SelectedDate.Day;
int ageDay = 0;
int ageMonth = 0;
int ageYear = 0;
if (day >= dobDate)
{
ageDay = day - dobDate;
}
else if(day< dobDate)
{
// If current Month= Jan, March, May, July, August, Oct, Dec i.e. of 31 days
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
day = day + 31;
}
// if current Month is of 30 days.
else if (month == 4 || month == 6 || month == 9 || month == 11)
{
day = day + 30;
}
// If Month is February
else if (month == 2)
{
if(year % 4==0) // if Year is Leap year then Feb will be of 29 days.
{
day = day + 29;
}
else
{
day = day + 28;
}
}
ageDay = day - dobDate;
month = month - 1;
}
if (month >= dobMonth)
{
ageMonth = dobMonth - month;
}
else if (month < dobMonth)
{
month = month + 12;
year = year - 1;
ageMonth = month - dobMonth;
}
ageYear = year - dobYear;
string sAge = String.Format("{0} Year/s {1} Month/s {2} Day/s", ageYear, ageMonth, ageDay);
TextBox1.Text = sAge;
}
这篇关于通过输入出生日期转换失败来计算年龄的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!