whats the simplest way to calculate the Monday in the first week of the year
i want to pass in a year and get a date back that represents the first monday of the first开发者_C百科 week
so:
- If a passed in 2011, i would get back Jan 3, 2011
- If a passed in 2010, i would get back Jan 4, 2010
private DateTime GetFirstMondayOfYear(int year)
{
DateTime dt = new DateTime(year, 1, 1);
while (dt.DayOfWeek != DayOfWeek.Monday)
{
dt = dt.AddDays(1);
}
return dt;
}
Try this for a solution without looping:
public DateTime FirstMonday(int year)
{
DateTime firstDay = new DateTime(year, 1, 1);
return new DateTime(year, 1, (8 - (int)firstDay.DayOfWeek) % 7 + 1);
}
You can use GetFirstMonday(2010) for getting first Monday for Jan 2010. Or you can specify month also with GetFirstMonday(2010, 2) to get first Monday for Feb 2010.
GetFirstDayOfMonth can get any first day for given month, need to pass DayOfWeek value for to get result of required day.
// Common function to get first day for any month & year.
public DateTime GetFirstDayOfMonth(int year, int month, int day)
{
return new DateTime(year, month, 1)
.AddDays((7 - datetime.DayOfWeek.GetHashCode() + day) % 7);
}
public DateTime GetFirstMonday(int year, int month = 1)
{
return GetFirstDayOfMonth(year, month, DayOfWeek.Monday.GetHashCode());
}
加载中,请稍侯......
精彩评论