2017-01-06 1 views
0

나는 다음 주 월요일 및 금요일 날짜를 얻는 데 다음과 같은 방법을 사용합니다.다음 주 월요일 및 금요일 날짜 받기

예를 들어, 오늘은 1/6/2017입니다. 나는 그것을 실행 한 경우, 나는 다음과 같은 결과를 얻을 수 있도록 노력하겠습니다 것입니다 : 내가 나중에 금요일 또는 토요일처럼 실행하면

monday = 1/9/2017 
friday = 1/13/2017 

내가 주 초에 실행하면 방법은 잘 작동을하지만, 월요일부터 금요일까지는 2 주 후를 반환합니다 (다음 주가 아님).

여기
monday = 1/16/2017 
friday = 1/20/2017 

은 방법 :

public static DateTime NextWeekRange(DateTime start, DayOfWeek day) 
{ 
    var add_days = ((int)day - (int)start.DayOfWeek + 7) % 7; 
    return start.AddDays(add_days); 
} 

내가 같이 호출이 오늘 (금요일 6), 나는 다음과 같은 결과를 얻을 실행 예를 들어

, 이 :

var monday = NextWeekRange(DateTime.Today.AddDays(i_today), DayOfWeek.Monday); 
var friday = NextWeekRange(DateTime.Today.AddDays(i_today + 4), DayOfWeek.Friday); 

내가 뭘 잘못했는지 모르겠다. 그래서 또 다른 한 쌍의 눈이 도움이 될 것이다!

감사합니다.

+0

마지막 코드 블록의 'i_today'값은 얼마입니까? –

답변

0
DateTime MyDate = DateTime.Now; 
     DateTime NextMondayDate; 
     DateTime NextFridayDate; 
     Boolean Test = true; 
     while (Test) 
     { 
      if (MyDate.DayOfWeek.ToString().ToUpper() == "MONDAY") 
      { 
       NextMondayDate = MyDate; 
       NextFridayDate = MyDate.AddDays(4); 
       Test = false; 
      } 

      else if (MyDate.DayOfWeek.ToString().ToUpper() == "FRIDAY") 
      { 
       NextFridayDate = MyDate; 
       NextMondayDate = MyDate.AddDays(3); 
       Test = false; 
      } 
      else 
      { 
       MyDate = MyDate.AddDays(1); 
      } 

     } 
+0

코드에 대해 조금 설명해 주시겠습니까? 감사! – SkyeBoniwell

+0

원칙은 현재 날짜를 테스트하는 것입니다 : 3 건의 경우가 발생합니다 : 1- 현재 날짜가 "Monday"이면 자동으로 금요일 + 월요일이됩니다. 특급 (09/01/2017 == "월요일") 09/01/2017 + 4 일 = 13/01/2017 == "금요일") 2- 현재 날짜가 금요일 인 경우 동일한 원칙. 이 경우 월요일의 날짜는 금요일 + 3 일입니다. 특급 (13/09/2017 == 금요일) 13/09/2017 + 3 일 = 16/09/2017 == 월요일 3 - 현재 날짜가 (1 또는 2)에 적용되지 않는 경우 1 일 추가 우리의 현재 날짜. 우리는 테스트를 다시 시작합니다. –

관련 문제