2013-08-22 29 views
0

我如何從MonthCalendar得到一週的日子?我想從一個MonthCalendar得到一週的日子

如果我選擇一天讓我們說。 2013年8月22日,

我想要一個代碼,將從週一到週日包括8月22,2013的所有代碼。

這意味着我會得到,8月18,19,20,21,22,23,24,25。

所以這是我的解決方案,但這不是我想要的。

List<DateTime> oneweek = new List<DateTime>(); 

for (int i = 7; 0 <= i; i--) 
{ 
     oneweek.Add(mcCalendar.SelectionEnd.Subtract(new TimeSpan(i, 0, 0, 0))); 
} 

它會得到在22日和7日後的日期列表。

就像我說的,我希望從星期一到星期日,包括8月22日這一週的日子。 aug 18,19,20,21,22,23,24,25。

+0

我知道。「周」並沒有共同的概念,包含8天(尤其是在那裏你將其描述爲週一到星期六,這似乎排除星期天),但你們兩次舉例爲18,19,20,21,22,23,24,25? –

回答

0

你可以得到一週using the method described in this answer

public static class DateTimeExtensions 
{ 
    public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek) 
    { 
     int diff = dt.DayOfWeek - startOfWeek; 
     if (diff < 0) 
     { 
      diff += 7; 
     } 

     return dt.AddDays(-1 * diff).Date; 
    } 
} 

的啓動哪些你會這樣使用:

DateTime monday = mcCalendar.SelectionEnd.StartOfWeek(DayOfWeek.Monday); 
List<int> days = new List<int>(); 
for (int i = 0; i < 7; i++) 
{ 
    days.Add(monday.AddDays(i).Day); 
} 
0

你在你的循環使用--i,然後在聲明中減去

這HOULD工作

for (int i = 0; i <= 7; i++) 
{ 
    oneweek.Add(mcCalendar.SelectionEnd.Subtract(new TimeSpan(i, 0, 0, 0))); 
} 
0

試着玩這個。

int i = 7 ; int j= 8 ; 
    for (int k = 0 ; k< 7 ; k++) 
    { 

    DateTime dateValue = new DateTime(2008, i, j); // for example 
    Console.WriteLine(dateValue.ToString("dddd")); // Displays the day 
    i++ ; j++ ; 
    } 
0

你可以只列舉在本週內所有日期。有一個IEnumerable<DateTime>結果,你可以很容易地你想要的集合 - 名單,陣...

public static IEnumerable<DateTime> GetWeekDays(DateTime date, DayOfWeek start) { 
    date = date.Date; 

    int diff = date.DayOfWeek - start; 

    if (diff < 0) 
    diff += 7; 

    for (int i = 0; i < 7; ++i) 
    yield return date.AddDays(i - diff); 
} 

public static IEnumerable<DateTime> GetWeekDays(DateTime date) { 
    return GetWeekDays(date, CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek); 
} 

... 

List<DateTime> oneWeek = GetWeekDays(DateTime.Now).ToList(); 
DateTime[] anotherWeek = GetWeekDays(new DateTime(2012, 5, 7)).ToArray(); 
相關問題