Member 12605293 Ответов: 2

Расчет возраста путем ввода даты рождения ошибка преобразования


Привет , я сделал приведенный ниже код, чтобы вычислить свой возраст, заполнив дату рождения,я получаю проблему сбоя преобразования

Что я уже пробовал:

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

CPallini

Пожалуйста, объясните лучше. Каково точное сообщение об ошибке (если таковое имеется)? Что такое оскорбительная строка кода?

2 Ответов

Рейтинг:
1

avinashkumar0509

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;
       

        }


Рейтинг:
0

OriginalGriff

Хм... это какой-то странный код.

string ageval = ((year - 1) + " years" + (-12 - months) + " months");
...
int value = int.Parse(ageval);
value = (ToString(txtAge.Text)) ;

Таким образом, вы намеренно загружаете строку с нецелым значением, а затем пытаетесь преобразовать ее в целое число, которое затем пытаетесь перезаписать Строковой версией некоторого случайного пользовательского ввода. И вы удивляетесь, когда это не удается? Он даже не будет компилироваться, если только ваш метод ToString не будет очень, очень плохо назван!

Взгляните на это: Работа с возрастом: это не то же самое, что временной промежуток![^]- он делает всю "работу ног" за вас.


Member 12605293

Привет Не могли бы вы помочь мне, как изменить этот код, чтобы получить результат?Я новичок в программировании.

OriginalGriff

Перейдите по ссылке, которую я вам дал: она включает в себя демонстрацию того, как работать и отображать возраст.

Maciej Los

5ед!