Есть много вещей, которые вам нужно сделать здесь. Прежде всего вам нужен способ для анализа даты, хранящейся в базе данных, первоначально введенной пользователем вручную. Это трудная задача, потому что пользователи, как правило, набирают что угодно.
Начните с DateTime.Parse()
, разберитесь со всеми ошибками, которые вы получите, и да, вы получите ошибки. Откуда, например, вы знаете, что означает "09/10/11" ? Это американское или британское свидание?
Одной из возможностей является переключение с TextBox
на некоторую форму MaskedTextBox
, чтобы заставить пользователя всегда вводить дату в одном и том же формате и правильно сохранять дату в качестве истинной даты в базе данных.
После того, как у вас есть правильное значение DateTime
, вы можете использовать простое вычитание, чтобы получить возраст человека, но возвращаемое вами значение TimeSpan
не совсем полезно, так как я предполагаю, что вам нужно вывести возраст человека в полные годы.
// Assuming dateOfBirth is a DateTime value
TimeSpan age = DateTime.Today - dateOfBirth;
Переменная age
здесь содержит количество времени, прошедшее с даты рождения до сегодняшнего дня. Учитывая тот факт, что годы различаются по длине, это не лучший вариант. Я бы сделал что-то вроде этого:
DateTime today = DateTime.Today;
int years = today.Year - dateOfBirth.Year;
if (dateOfBirth.Month > today.Month) {
--years;
}
else if (dateOfBirth.Month == today.Month && dateOfBirth.Day > today.Day) {
--years;
}
// TODO: Output the years variable.