记录一个方法,记录根据年,第几周,取得所在周的起始日期

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);        }        

猜你喜欢

转载自www.cnblogs.com/liteon-kevinkong/p/12501931.html
今日推荐