我想要做的是创建一个简单的日历,并且我想查找特定月份的第一周的第一天。我的日历是星期一 - >星期日日历,下面的代码可以工作,但正如你所看到的那样。任何人都有更好的想法如何获得日历中的第一个日期。查找日历的第一天
var now = new DateTime(Year, Month, 1);
now = now.AddDays(1-(int)now.DayOfWeek);
now = now.Day > 15 ? now : now.AddDays(-7);
日历将最终看起来像这样:
| < | Jan 2011 | > |
------------------------------------
| Mo | Tu | We | Th | Fr | Sa | Su |
|[27]| 28 | 29 | 30 | 31 | 01 | 02 |
| 03 | 04 | 05 | 06 | 07 | 08 | 09 |
| .. | .. | .. | .. | .. | .. | .. |
| .. | .. | .. | .. | .. | .. | .. |
| 31 | 01 | 02 | 03 | 04 | 05 | 06 |
而在这个“形象”那就是我试图找到[27]日期。
解决方案(找到我更好/更清洁循环再计算):
public DateTime FirstDay()
{
var date = new DateTime(Date.Year, Date.Month, 1);
while (true)
{
if (date.DayOfWeek == DayOfWeek.Monday)
return date;
date = date.AddDays(-1);
}
return date;
}
public DateTime LastDay()
{
var date = new DateTime(Date.Year, Date.Month,
DateTime.DaysInMonth(Date.Year, Date.Month));
while (true)
{
if (date.DayOfWeek == DayOfWeek.Sunday)
return date;
date = date.AddDays(1);
}
return date;
}
/BR 安德烈亚斯
+1,为ASCII艺术。 – 2011-02-03 07:36:25
+1#哇,其实我在我的学院用C语言在控制台程序中做了一个类似的日历。 – 2011-02-15 10:44:36