/// <summary> /// Previous /// </summary> /// <param name="dt"></param> /// <param name="dayOfWeek"></param> /// <returns></returns> public static DateTime PreviousDayOfWeek(this DateTime dt, DayOfWeek dayOfWeek) { var offset = DayOfWeekCalc.DaysBetween(dt.DayOfWeek, dayOfWeek); offset = offset == 0 ? 7 : offset; return(dt.AddDays(-offset)); }
/// <summary> /// Get the day of the last specified week of the month. /// </summary> /// <param name="dt"></param> /// <param name="dayOfWeek"></param> /// <returns></returns> public static DateTime LastDayOfMonth(this DateTime dt, DayOfWeek dayOfWeek) { var ret = dt.LastDayOfMonth(); return(DayOfWeekCalc.TryDaysBetween(ret.DayOfWeek, dayOfWeek, out var day) && day == 0 ? ret : ret.AddDays(-day)); }
/// <summary> /// Get the day of the first specified week of the month. /// </summary> /// <param name="dt"></param> /// <param name="dayOfWeek"></param> /// <returns></returns> public static DateTime FirstDayOfMonth(this DateTime dt, DayOfWeek dayOfWeek) { var ret = dt.FirstDayOfMonth(); return(DayOfWeekCalc.TryDaysBetween(ret.DayOfWeek, dayOfWeek, out var day) && day > 0 ? ret.AddDays(day) : ret); }
public static DateInfo OffsetByDayOfWeek(DateInfo d, DayOfWeek dayOfWeek, int weekOffset) { var z = weekOffset > 0 ? 1 : -1; var offset = DayOfWeekCalc.DaysBetween(d.DayOfWeek, dayOfWeek); offset = offset == 0 ? 7 : offset; return(d.OffsetBy(offset * z * weekOffset, DateTimeOffsetStyles.Day)); }