我如何从MonthCalendar获得本周的日期?
如果我选择一天就可以说。 2013年8月22日,
我想要一个能够从周一到周日获得所有代码的代码,包括2013年8月22日。
这意味着我会得到,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)));
}
它会从8月22日和7天后得到一份日期列表。
像我说的那样,我希望从星期一到星期日,包括8月22日这一周的日子。 8月18,19,20,21,22,23,24,25。答案 0 :(得分:0)
你在你的循环中使用--i然后在语句中减去
这可以工作
for (int i = 0; i <= 7; i++)
{
oneweek.Add(mcCalendar.SelectionEnd.Subtract(new TimeSpan(i, 0, 0, 0)));
}
答案 1 :(得分: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);
}
答案 2 :(得分: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++ ;
}
答案 3 :(得分:0)
您可以枚举一周内的所有日期。结果为IEnumerable<DateTime>
,您可以轻松地创建所需的集合 - List,Array ...
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();