Изчислете DateTime за предстоящия ден от седмицата

Това е кодът, който имам в момента:

String getDayRequested;
public void setDay(String getDayFromForm1)
{
   getDayRequested = getDayFromForm1;
   {
      if (getDayRequested.Contains("today"))
      {
         getDayRequested = DateTime.Today.DayOfWeek.ToString();
      }
      else if (getDayRequested.Contains("tomorrow"))
      {
         getDayRequested = DateTime.Today.AddDays(1).DayOfWeek.ToString();
   }
}

Това проверява моя TextBox.Text низ от Form1 и проверява дали текстът "днес" или "утре" е в него.

Може ли някой да ми помогне в правилната посока как да проверя низа за зададена информация за предстоящите дни; т.е.: "Коя ще бъде датата тази събота" и добавете подходящия брой дни в зависимост от това кой е денят, когато бъдете попитани.

АКТУАЛИЗАЦИЯ

Използвайки кода в приетия отговор, използвах следното в моя горен оператор else if, за да завърша това, което преследвах:

else if (getDayRequested.Contains("monday"))
{
   getDayRequested = GetFutureDay(DateTime.Now, DayOfWeek.Monday).ToString("dd");
}

person The Woo    schedule 05.12.2013    source източник
comment
Искате да кажете, че вашето текстово поле ще има каква ще бъде датата тази събота и трябва да върнете датата, която е в събота?   -  person V4Vendetta    schedule 05.12.2013
comment
@TheWoo Имате ли нужда от повече информация? Как ви подействаха тези отговори?   -  person crthompson    schedule 05.12.2013
comment
Трябва да има по-елегантно решение от използването на Contains. Как изглежда getDayRequested?   -  person crthompson    schedule 06.12.2013


Отговори (2)


Този удобен малък метод ще върне бъдещ ден от седмицата.

public DateTime GetFutureDay(DateTime start, DayOfWeek day)
{
    int daysToAdd = (day - start.DayOfWeek + 7) % 7;
    return start.AddDays(daysToAdd);
}

Ще се нарича така:

var day = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), getDayFromForm1);
var getDayRequested = GetFutureDay(DateTime.Now, day);
person crthompson    schedule 05.12.2013
comment
Нямате нужда от кастинг (int). - person King King; 05.12.2013
comment
Това работи перфектно. Актуализирах въпроса по-горе с кода, който работи за него. Благодаря ти много. - person The Woo; 06.12.2013

Разгледайте следния кодов фрагмент...

DateTime date;
public void setDay(String day)
{
    DayOfWeek futureDay = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), day);
    int futureDayValue = (int)futureDay;
    int currentDayValue = (int)DateTime.Now.DayOfWeek;
    int dayDiff = futureDayValue - currentDayValue;
    if (dayDiff > 0)
    {
        date = DateTime.Now.AddDays(dayDiff);
    }
    else
    {
        date = DateTime.Now.AddDays(dayDiff + 7);
    }


}

Късмет!

person gpmurthy    schedule 05.12.2013