public DateTime GetDayOfWeekDateForWeek(int week, DayOfWeek dayOfWeek) { Checks.InRange(1, 5, week, $"{week} is out of range in month {_month.GetName()} of Year {_year.GetYear()}"); var daysUtilFirstDayOfThisWeek = 1 + (week - 1) * 7; var dateTime = new DateTime(_year.GetYear(), _month.GetMonth(), daysUtilFirstDayOfThisWeek); var firstDayOfThisWeek = dateTime.DayOfWeek; var intOfDayOfWeek = dayOfWeek.GetInt(); var intOfFirstDayOfThisWeek = firstDayOfThisWeek.GetInt(); var days = intOfDayOfWeek >= intOfFirstDayOfThisWeek ? intOfDayOfWeek - intOfFirstDayOfThisWeek : intOfDayOfWeek - intOfFirstDayOfThisWeek + 7 ; Checks.LessThanOrEqual <ArgumentOutOfRangeException>(TotalDays, days + 1, $"{dayOfWeek} doesn't exist in {week} week(s) of {_month.GetName()} {_year}"); return(dateTime.AddDays(days)); }
/// <summary> /// Construct MonthOfYear by specified Month and this Year /// </summary> /// <param name="month">Month</param> /// <returns>MonthOfYear</returns> public MonthOfYear ForMonth(Month month) { return(MonthOfYear.Of(Month.Of(month.GetMonth()), Of(_year))); }
public static DateTime Of(int year, Month month, int day, DateTimeKind kind) { return(DateTime.SpecifyKind(new DateTime(Year.CheckRange(year), month.GetMonth(), month.CheckRange(day, year)), kind)); }
public static DayOfMonth Of(int day, Month month) { return(new DayOfMonth(day, month.GetMonth(), 0)); }