как сравнить два значения datetimepicker в С#

У меня возникла проблема с приложением Windows Form, в котором есть два элемента управления DateTimePicker, показывающие ДАТУ РОЖДЕНИЯ и ДАТУ ПРИСОЕДИНЕНИЯ".

Я хочу сравнить значения этих элементов управления таким образом, чтобы дата рождения была не меньше и не больше и не должна быть равна меньше и не больше и не должна быть равна...

Как я могу это сделать?


person Shiva Debrown    schedule 04.09.2014    source источник
comment
Посмотрите на связанный вопрос, в основном...   -  person Jon Skeet    schedule 04.09.2014
comment
А если это не поможет, нельзя ли просто взять Value из каждого DateTimePicker и сравнить их? Что вы пробовали и что пошло не так?   -  person Jon Skeet    schedule 04.09.2014
comment
Я хотел знать, как использовать сравнения больше и меньше в winform. Если я сохраню дату и время, она сохранится в моей базе данных как текст (строка) как 09/04/2014. Если я хочу сравнить эти 2 строки в форме, что делать? @ДжонСкит   -  person Shiva Debrown    schedule 04.09.2014
comment
То, что предлагал @JonSkeet, можно показать в моем ответе.   -  person jbutler483    schedule 04.09.2014
comment
Из вашего комментария я бы спросил себя, как бы вы проверили, являются ли даты до/после/равными, если вы только что преобразовали их в строки ИЗ формата даты/времени?   -  person jbutler483    schedule 04.09.2014
comment
@ShivaDebrown: Ну, вы просто используете foo.Value > bar.Value... то, как ваши данные хранятся в вашей базе данных, - это совершенно другой вопрос. (В вашем вопросе даже не упоминается база данных!) Вам следует изменить схему базы данных, чтобы она не использовала даты...   -  person Jon Skeet    schedule 04.09.2014
comment
Конечно, хранение данных - это другое дело ... НО пытаюсь объяснить, чего именно я хочу ... и я не сравниваю значения базы данных, поэтому не упоминал базу данных @JonSkeet   -  person Shiva Debrown    schedule 04.09.2014
comment
например, моя компания нанимает сотрудников так, чтобы им было меньше 30 лет. тип проблем Что делать.. @jbutler483   -  person Shiva Debrown    schedule 04.09.2014
comment
@ShivaDebrown - Почему вы должны преобразовывать даты в строки, прежде чем сравнивать их? Почему вы не можете просто сравнить свойства .Value каждого DateTimePicker?   -  person Chris Dunaway    schedule 04.09.2014
comment
int year = DateTime.Today.Year - dtpdob.Value.Year; int month = DateTime.Today.Month - dtpdob.Value.Month; int day = DateTime.Today.Day - dtpdob.Value.Day; var a = year.ToString(); var b = month.ToString(); var c = day.ToString(); if (day != 0 && month!=0 && year!=0) { if(day!=1) txtage.Text = a + " Years " + b + " Months " + c + " Days "; else txtage.Text = a + " Years " + b + " Months " + c + " Day "; } получится ли узнать возраст?? @jbutler483   -  person Shiva Debrown    schedule 06.09.2014


Ответы (2)


Попробуйте этот код

DateTimePicker dtBDay = new DateTimePicker();
dtBDay.Value = DateTime.Now.AddYears(-5);
DateTimePicker dtJoin = new DateTimePicker();
dtJoin.Value = DateTime.Now;
if (dtBDay.Value >= dtJoin.Value)
{
    throw new Exception("Date of Join cannot be less than or equal to Date of Birth");
}

Надеюсь, это поможет

person Karthick NS    schedule 04.09.2014
comment
например, моя компания нанимает сотрудников так, чтобы им было меньше 30 лет. тип проблем Что делать.. @karthick - person Shiva Debrown; 04.09.2014
comment
Используйте событие ValueChanged элемента управления выбора даты. Из этого события вы проверяете значение. - person Karthick NS; 04.09.2014

По предложению jbutler483

Я пытался это сделать, но не смог найти никакого решения, поскольку, насколько мне известно, я использовал следующий код

 private void dtpdob_ValueChanged(object sender, EventArgs e)
  {
      int year = DateTime.Today.Year - dtpdob.Value.Year;
      int month = DateTime.Today.Month - dtpdob.Value.Month;
      int day = DateTime.Today.Day - dtpdob.Value.Day;
      var a = year.ToString();
      var b = month.ToString();
      var c = day.ToString();
      if (day != 0 && month!=0 && year!=0)
      {
          if(day!=1)
          txtage.Text = a + " Years " + b + " Months " + c + " Days ";
          else
              txtage.Text = a + " Years " + b + " Months " + c + " Day ";
      }
      else if (day == 0 && month == 0)
          txtage.Text = a + " Years ";
      else if (day == 0 && month != 0)
          txtage.Text = a + " Years " + b + " Months ";
      else
          txtage.Text = a + " Years " + b + " Months " + c + " Days "; 
  }
person Shiva Debrown    schedule 08.09.2014