как да сравним две стойности на datetimepicker в c#

Имам проблем с 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. Ако запазя датата и часа, тя се записва в моята база данни като текст (низ) като 04/09/2014, ако искам да сравня тези 2 низа във формуляра, какво да правя? @JonSkeet   -  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