public static DateInfo OffsetByWeekAfter(DateInfo dt, DayOfWeek dayOfWeek) { var daysNeeded = (int)dayOfWeek - (int)dt.DayOfWeek; return((int)dayOfWeek >= (int)dt.DayOfWeek ? dt.AddDays(daysNeeded) : dt.AddDays(daysNeeded + 7)); }
public static DateInfo OffsetByWeekBefore(DateInfo dt, DayOfWeek dayOfWeek) { var daysSubtract = (int)dayOfWeek - (int)dt.DayOfWeek; return((int)dayOfWeek < (int)dt.DayOfWeek ? dt.AddDays(daysSubtract) : dt.AddDays(daysSubtract - 7)); }
/// <summary> /// Get last day of this week /// </summary> /// <param name="d"></param> /// <param name="cultureInfo"></param> /// <returns></returns> public static DateInfo GetLastDayInfoOfWeek(this DateInfo d, CultureInfo cultureInfo) { cultureInfo = (cultureInfo ?? CultureInfo.CurrentCulture); var firstDayOfWeek = cultureInfo.DateTimeFormat.FirstDayOfWeek; while (d.DayOfWeek != firstDayOfWeek) { d = d.AddDays(-1); } return(d.AddDays(6)); }
/// <summary> /// Get previous weekday. /// </summary> /// <param name="d"></param> /// <param name="weekday"></param> /// <returns></returns> public static DateInfo GetPreviousWeekdayInfo(this DateInfo d, DayOfWeek weekday) { while (d.DayOfWeek != weekday) { d = d.AddDays(-1); } return(d); }
/// <summary> /// Add business days<br /> /// 添加指定个数量的工作日 /// </summary> /// <param name="d"></param> /// <param name="days"></param> /// <returns></returns> public static DateInfo AddBusinessDays(this DateInfo d, int days) { var sign = Math.Sign(days); var unsignedDays = Math.Abs(days); for (var i = 0; i < unsignedDays; i++) { do { d = d.AddDays(sign); } while (d.DayOfWeek == DayOfWeek.Saturday || d.DayOfWeek == DayOfWeek.Sunday); } return(d); }
public static DateInfo AddWeeks(this DateInfo d, int weeks) => d.AddDays(weeks * 7);
/// <summary> /// Get yesterday<br /> /// 前一天 /// </summary> /// <param name="d"></param> /// <returns></returns> public static DateInfo Yesterday(this DateInfo d) => d.AddDays(-1);
/// <summary> /// Add one day<br /> /// 加一天 /// </summary> /// <param name="d"></param> /// <returns></returns> public static DateInfo AddDay(this DateInfo d) => d.AddDays(1);