asp.net 时间类 一周的周一和周末的日期

  好多时候,数据库查询统计时需要使用本周统计

  这里又不想把计算的任务交给数据去做

  于是自己写个小函数,得到本周的周一和周末的时间,数据库比较的时候只需要 between ... and 就可以了

  代码如下:

  #region 得到一周的周一和周日的日期

  /// <summary>

  /// 计算本周的周一日期

  /// </summary>

  /// <returns></returns>

  public static DateTime GetMondayDate()

  {

  return GetMondayDate(DateTime.Now);

  }

  /// <summary>

  /// 计算本周周日的日期

  /// </summary>

  /// <returns></returns>

  public static DateTime GetSundayDate()

  {

  return GetSundayDate(DateTime.Now);

  }

  /// <summary>

  /// 计算某日起始日期(礼拜一的日期)

  /// </summary>

  /// <param name="someDate">该周中任意一天</param>

  /// <returns>返回礼拜一日期,后面的具体时、分、秒和传入值相等</returns>

  public static DateTime GetMondayDate(DateTime someDate)

  {

  int i = someDate.DayOfWeek - DayOfWeek.Monday;

  if (i == -1) i = 6;// i值 > = 0 ,因为枚举原因,Sunday排在最前,此时Sunday-Monday=-1,必须+7=6。

  TimeSpan ts = new TimeSpan(i, 0, 0, 0);

  return someDate.Subtract(ts);

  }

  /// <summary>

  /// 计算某日结束日期(礼拜日的日期)

  /// </summary>

  /// <param name="someDate">该周中任意一天</param>

  /// <returns>返回礼拜日日期,后面的具体时、分、秒和传入值相等</returns>

  public static DateTime GetSundayDate(DateTime someDate)

  {

  int i = someDate.DayOfWeek - DayOfWeek.Sunday;

  if (i != 0) i = 7 - i;// 因为枚举原因,Sunday排在最前,相减间隔要被7减。

  TimeSpan ts = new TimeSpan(i, 0, 0, 0);

  return someDate.Add(ts);

  }

  #endregion