记录一个方法,记录根据年,第几周,取得所在周的起始日期
public static bool CalcWeekDay(int year, int week, out DateTime first, out DateTime last)
{
first = DateTime.MinValue;
last = DateTime.MinValue;
//年份超限
if (year < 1700 || year > 9999) return false;
//周数错误
if (week < 1 || week > 53) return false;
//指定年范围
DateTime start = new DateTime(year, 1, 1);
DateTime end = new DateTime(year, 12, 31);
int startWeekDay = (int)start.DayOfWeek-1;
//周的起始日期
first = start.AddDays((7 - startWeekDay) + (week - 2) * 7);
last = first.AddDays(6);
if (last.Year - year ==1)
{
last = Convert.ToDateTime(year + "-12-31");
}
//结束日期跨年
return (last <= end);
}
调用:
bool result = CalcWeekDay(2020, 53, out first, out last);
返回日期对应的日期区间。
public static bool CalcWeekDay(int year, int week, out DateTime first, out DateTime last) { first = DateTime.MinValue; last = DateTime.MinValue; //年份超限 if (year < 1700 || year > 9999) return false; //周数错误 if (week < 1 || week > 53) return false; //指定年范围 DateTime start = new DateTime(year, 1, 1); DateTime end = new DateTime(year, 12, 31); int startWeekDay = (int)start.DayOfWeek-1; //周的起始日期 first = start.AddDays((7 - startWeekDay) + (week - 2) * 7); last = first.AddDays(6);
if (last.Year - year ==1) { last = Convert.ToDateTime(year + "-12-31"); } //结束日期跨年 return (last <= end); }

浙公网安备 33010602011771号