/// <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);
        }
Exemple #4
0
        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));
        }