public static DateInfo OffsetBy(this DateInfo dt, int offsetVal, DateTimeOffsetStyles styles) { return(styles switch { DateTimeOffsetStyles.Day => DateInfoCalc.OffsetByDays(dt, offsetVal), DateTimeOffsetStyles.Week => DateInfoCalc.OffsetByWeeks(dt, offsetVal), DateTimeOffsetStyles.Month => DateInfoCalc.OffsetByMonths(dt, offsetVal, DateTimeOffsetOptions.Relatively), DateTimeOffsetStyles.Quarters => DateInfoCalc.OffsetByQuarters(dt, offsetVal, DateTimeOffsetOptions.Relatively), DateTimeOffsetStyles.Year => DateInfoCalc.OffsetByYears(dt, offsetVal, DateTimeOffsetOptions.Relatively), _ => DateInfoCalc.OffsetByDays(dt, offsetVal) });
public static DateInfo CreateByWeek(int year, int month, DayOfWeek dayOfWeek, int occurrence) => DateInfoCalc.OffsetByWeek(year, month, occurrence, dayOfWeek.CastToInt(0));
public static DateInfo CreateLastDayOfMonth(int year, int month, DayOfWeek dayOfWeek) { return(DateInfoCalc.TryOffsetByWeek(year, month, 5, dayOfWeek, out var resultedDay) ? resultedDay : DateInfoCalc.OffsetByWeek(year, month, 4, dayOfWeek)); }
public static DateInfo CreatePreviousDayByWeek(DateInfo dt, DayOfWeek dayOfWeek) => DateInfoCalc.OffsetByWeekBefore(dt, dayOfWeek);
public static DateInfo CreatePreviousDayByWeek(int year, int month, int day, DayOfWeek dayOfWeek) => DateInfoCalc.OffsetByWeekBefore(Create(year, month, day), dayOfWeek);
public static DateInfo CreateNextDayByWeek(DateInfo dt, DayOfWeek dayOfWeek) => DateInfoCalc.OffsetByWeekAfter(dt, dayOfWeek);
public static DateInfo CreateNextDayByWeek(int year, int month, int day, DayOfWeek dayOfWeek) => DateInfoCalc.OffsetByWeekAfter(Create(year, month, day), dayOfWeek);
public static DateInfo CreateFirstDayOfMonth(int year, int month, int dayOfWeek) => DateInfoCalc.OffsetByWeek(year, month, 1, dayOfWeek);