public static DateTime OffsetBy(this DateTime dt, int offsetVal, DateTimeOffsetStyles styles) { return(styles switch { DateTimeOffsetStyles.Day => DateTimeCalc.OffsetByDays(dt, offsetVal), DateTimeOffsetStyles.Week => DateTimeCalc.OffsetByWeeks(dt, offsetVal), DateTimeOffsetStyles.Month => DateTimeCalc.OffsetByMonths(dt, offsetVal, DateTimeOffsetOptions.Relatively), DateTimeOffsetStyles.Quarters => DateTimeCalc.OffsetByQuarters(dt, offsetVal, DateTimeOffsetOptions.Relatively), DateTimeOffsetStyles.Year => DateTimeCalc.OffsetByYears(dt, offsetVal, DateTimeOffsetOptions.Relatively), _ => DateTimeCalc.OffsetByDays(dt, offsetVal) });
public static DateTime CreateByWeek(int year, int month, DayOfWeek dayOfWeek, int occurrence) => DateTimeCalc.OffsetByWeek(year, month, occurrence, dayOfWeek.CastToInt(0));
public static DateTime CreatePreviousDayByWeek(DateTime dt, DayOfWeek dayOfWeek) => DateTimeCalc.OffsetByWeekBefore(dt, dayOfWeek);
public static DateTime CreatePreviousDayByWeek(int year, int month, int day, DayOfWeek dayOfWeek) => DateTimeCalc.OffsetByWeekBefore(Create(year, month, day), dayOfWeek);
public static DateTime CreateNextDayByWeek(DateTime dt, DayOfWeek dayOfWeek) => DateTimeCalc.OffsetByWeekAfter(dt, dayOfWeek);
public static DateTime CreateNextDayByWeek(int year, int month, int day, DayOfWeek dayOfWeek) => DateTimeCalc.OffsetByWeekAfter(Create(year, month, day), dayOfWeek);
public static DateTime CreateFirstDayOfMonth(int year, int month, int dayOfWeek) => DateTimeCalc.OffsetByWeek(year, month, 1, dayOfWeek);
/// <summary> /// To get the latest weekday for example Monday in a month.<br /> /// 寻找一个月中的最后一个工作日(如周一) /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <param name="dayOfWeek"></param> /// <returns></returns> public static DateTime CreateLastDayOfMonth(int year, int month, int dayOfWeek) { return(DateTimeCalc.TryOffsetByWeek(year, month, 5, dayOfWeek, out var resultedDay) ? resultedDay : DateTimeCalc.OffsetByWeek(year, month, 4, dayOfWeek)); }
public static DateTime AddDuration(this DateTime dt, Duration duration) => DateTimeCalc.OffsetByDuration(dt, duration);
public static DateTime AddQuarters(this DateTime dt, int quarters) => DateTimeCalc.OffsetByQuarters(dt, quarters);
public static DateTime AddWeeks(this DateTime dt, int weeks) => DateTimeCalc.OffsetByWeeks(dt, weeks);