2013-12-05 3 views
2

Это код, у меня есть на данный момент:Рассчитать 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, и проверяет, является ли текст «сегодня» или «завтра «находится в нем.

Может ли кто-нибудь помочь мне в правильном направлении, как проверить строку информации о предстоящих днях; т.е.: «Какая будет дата в эту субботу», и добавьте соответствующее количество дней в зависимости от того, что день, когда его спрашивают.

UPDATE

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

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

Вы имеете в виду, что ваше текстовое поле будет иметь «Что будет в эту субботу», и вы должны вернуть дату, которая находится в субботу? – V4Vendetta

+0

@ TheWoo Больше информации вам нужно? Как эти ответы работали для вас? – paqogomez

+0

Должно быть более элегантное решение, использующее 'Contains'. Как выглядит 'getDayRequested'? – paqogomez

ответ

3

Этот маленький удобный метод возвратите будущий день недели.

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); 
+0

Вам не нужно кастинг '(int)'. –

+0

@KingKing спасибо. – paqogomez

+0

Это сработало отлично. Я обновил вопрос выше с кодом, который работал на него. спасибо. –

1

Рассмотрим следующий фрагмент кода ...

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


} 

Good Luck!

+0

Отличный ответ +1 – paqogomez

+0

Спасибо! Ты тоже :) – gpmurthy

Смежные вопросы