0

我有这个代码

 for (int day =1; days >= day; day++)
 {
     onemonth.Add(new DateTime(year,month,day));
 }

  mcCalendar.SelectionRange = new SelectionRange(onemonth[0], onemonth[onemonth.Count - 1]);

所以这些代码应该获取月份中的日期并在列表中创建月份中每一天的日期时间。

现在。当 McCalendar.SelectionRange 没有从第 1 天到第 31 天选择时,问题就开始了,它只从 1 到 30 天选择。今天是 8 月,这个月有 31 天。如何选择本月的所有日期?包括 8 月 31 日。

4

2 回答 2

0

您可以使用以下方法获取一个月中的天数

DateTime.DaysInMonth(year, month);

然后运行你的循环直到你得到的天数。

顺便说一句,如果您必须选择当月的所有日子。你不需要任何循环

public DateTime StartOfMonth(DateTime dateTime)
{
      return new DateTime(dateTime.Year, dateTime.Month, 1);
}
public DateTime EndOfMonth(DateTime dateTime)
{
      DateTime firstDayOfTheMonth = new DateTime(dateTime.Year, dateTime.Month, 1);
      return firstDayOfTheMonth.AddMonths(1).AddDays(-1);
}
private void button1_Click_2(object sender, EventArgs e)
{
      DateTime startMonth = StartOfMonth(DateTime.Now);
      DateTime endMonth = EndOfMonth(DateTime.Now);
      monthCalendar1.SelectionRange = new SelectionRange(startMonth, endMonth);
}
于 2013-08-22T08:42:45.653 回答
0

我看到您在 for 循环中使用了“天”变量。您应该将其初始化为每月的天数:

int days = System.DateTime.DaysInMonth(year, month);
于 2013-08-22T08:43:02.853 回答