2013-07-01 4 views
0

아래의 코드를 사용하여 모든 요일을 얻으려고합니다.프로그래밍 방식으로 asp.net 캘린더에서 요일을 선택하십시오.

private List<DateTime> getWeekDays(DateTime dt) 
    { 
     List<DateTime> result = new List<DateTime>(); 

     int month = dt.Month; 
     dt = dt.AddDays(-dt.Day + 1);//Sets dt to first day of month 

     //Sets dt to the first week day of the month; 
     if (dt.DayOfWeek != DayOfWeek.Monday) 
      while (dt.DayOfWeek != DayOfWeek.Friday) 
       dt = dt.AddDays(1); 

     //Adds the week day and stops when next month is reached. 
     while (dt.Month == month) 
     { 
      result.Add(dt); 
      dt = dt.AddDays(dt.DayOfWeek == DayOfWeek.Friday ? 3 : 1); 
     } 
     return result; 
    } 

하지만 올바르게 작동하지 않습니다. July 월을 getWeekDays(DateTime dt) 방법으로 전달하면 모든 요일에 올바르게 적용됩니다. 그러나 August 또는 Semptember을 전달하면 위의 코드는 해당 월의 모든 요일을 반환하지 않습니다.

어디서 오류가 있습니까?

답변

1
 private List<DateTime> getWeekDays(DateTime dt) 
     { 
      List<DateTime> result = new List<DateTime>(); 

      int month = dt.Month; 
      dt = dt.AddDays(-dt.Day + 1);//Sets dt to first day of month 

      //If dt is a weekend add days to move it to Monday (your while loop below will handle the rest) 
      if(dt.DayOfWeek == DayOfWeek.Saturday) 
      { 
       dt = dt.AddDays(2); 
      } 
      else if (dt.DayOfWeek == DayOfWeek.Sunday) 
      { 
       dt = dt.AddDays(1); 
      } 

      //Adds the week day and stops when next month is reached. 
      while (dt.Month == month) 
      { 
       result.Add(dt); 
       dt = dt.AddDays(dt.DayOfWeek == DayOfWeek.Friday ? 3 : 1); 
      } 

      return result; 
     } 
관련 문제