C#日期操作-星期(week)相关
根据年份和周数(weekIndex),获取星期(week)的开始日期和结束日期
/// <summary> /// 根据年份和星期周数,获得星期的日期范围 /// </summary> /// <param name="year">年份</param> /// <param name="weekIndex">星期的周数,年度第几周</param> /// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param> /// <returns>日期数组,[开始日期,结束日期]</returns> public DateTime[] GetDateRange(int year, int weekIndex, DayOfWeek firstDayOfWeek) { DateTime time = DateTime.Parse(year + "-01-01"); while (time.DayOfWeek != firstDayOfWeek) { time = time.AddDays(1); } DateTime time1 = time.AddDays((weekIndex - 1) * 7); DateTime time2 = time1.AddDays(6); return new DateTime[] { time1, time2 }; }
GarsonZhang www.yesdotnet.com
根据日期,获得当前星期(week)的第一天日期
/// <summary> /// 根据日期获得星期的第一天 /// </summary> /// <param name="date">日期</param> /// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param> /// <returns>星期的第一天</returns> public DateTime GetWeekFirstDay(DateTime date,DayOfWeek firstDayOfWeek)
{ while (date.DayOfWeek != firstDayOfWeek) { date=date.AddDays(-1); } return date; }
GarsonZhang www.yesdotnet.com
根据日期,获得当前星期(week)的最后一天日期
/// <summary> /// 根据日期获得星期的最后一天 /// </summary> /// <param name="date">日期</param> /// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param> /// <returns>星期的最后一天</returns> public DateTime GetWeekLastDay(DateTime date, DayOfWeek firstDayOfWeek) { DayOfWeek lastDayOfWeek = (DayOfWeek)((((int)firstDayOfWeek - 1) + 7) % 7); while (date.DayOfWeek != lastDayOfWeek) { date = date.AddDays(1); } return date; }
GarsonZhang www.yesdotnet.com
根据第一天的星期枚举,来获得星期(week)的最后一天枚举值
/// <summary> /// 获得一个星期的最后星期值(枚举值) /// </summary> /// <param name="firstDayOfWeek"></param> /// <returns></returns> public DayOfWeek GetLastDayOfWeek(DayOfWeek firstDayOfWeek) { int lastDayOfWeek = (((int)firstDayOfWeek - 1) + 7) % 7; return (DayOfWeek)lastDayOfWeek; }
GarsonZhang www.yesdotnet.com
获得日期为当年的第几周
/// <summary> /// 获得当前日期是一年中的第几个星期 /// </summary> /// <param name="date">日期</param> /// <param name="rule">定义日历周的枚举值。</param> /// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param> /// <returns>周数</returns> public int GetWeekOfYear(DateTime date, System.Globalization.CalendarWeekRule rule, DayOfWeek firstDayOfWeek) { System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar(); int weekIndex = gc.GetWeekOfYear(date, rule, firstDayOfWeek); return weekIndex; }
GarsonZhang www.yesdotnet.com
1. 当年第一天所在的日期为第一周

/// <summary> /// 获得当前日期是一年中的第几个星期 /// 指示年的第一周从该年的第一天开始,到所指定周的下一个首日前结束。值为 0。 /// </summary> /// <param name="date">日期</param> /// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param> /// <returns>周数</returns> public int GetWeekOfYearByFirstDay(DateTime date, DayOfWeek firstDayOfWeek) { System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar(); int weekIndex = gc.GetWeekOfYear(date, System.Globalization.CalendarWeekRule.FirstDay, firstDayOfWeek); return weekIndex; }
GarsonZhang www.yesdotnet.com
2. 日期从周首日开始匹配,整个星期的日期都在当年才算

/// <summary> /// 获得当前日期是一年中的第几个星期 /// 指示年的第一周从所指定周首日的第一个匹配项开始,可以是年的第一天或其后某一天。值为 1。 /// </summary> /// <param name="date">日期</param> /// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param> /// <returns>周数</returns> public int GetWeekOfYearByFirstFullWeek(DateTime date, DayOfWeek firstDayOfWeek) { System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar(); int weekIndex = gc.GetWeekOfYear(date, System.Globalization.CalendarWeekRule.FirstFullWeek, firstDayOfWeek); return weekIndex; }
GarsonZhang www.yesdotnet.com
3. 日期所在周需要报含4天或更多天
开始日期所在周本年度总天数小于4天 | 开始日期所在周本年度总天数大于4天或4天以上 |
![]() | ![]() |
/// <summary> /// 获得当前日期是一年中的第几个星期 /// 指示年的第一周是第一个在指定的周首日前包含四天或更多天的周。值为 2。 /// </summary> /// <param name="date">日期</param> /// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param> /// <returns>周数</returns> public int GetWeekOfYearByFirstFourDayWeek(DateTime date, DayOfWeek firstDayOfWeek) { System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar(); int weekIndex = gc.GetWeekOfYear(date, System.Globalization.CalendarWeekRule.FirstFourDayWeek, firstDayOfWeek); return weekIndex; }
GarsonZhang www.yesdotnet.com
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
CommonCode YES开发框架