/// <summary> /// Returns the Nth week number (1 thru 5) for the date argument and the /// WeekInterval argument. For example, if the date is 27 Jan 2040 and /// interval is WeekInterval.Last then the method returns 4 (4th week). /// </summary> /// <param name="aDate"></param> /// <param name="interval"></param> /// <returns></returns> internal static int ToNthFromWeekInterval(this DateTime aDate, WeekInterval interval) { var numberOfWeeksInMonth = aDate.WeeksInMonth(); switch (interval) { case WeekInterval.First: return(1); case WeekInterval.Second: return(2); case WeekInterval.Third: return(3); case WeekInterval.Fourth: return(4); case WeekInterval.Last: return((numberOfWeeksInMonth > 4) ? 5 : 4); default: return(0); } }
/// <summary> /// New Time. /// </summary> /// <param name="hours">The hours</param> /// <param name="minutes">The minutes</param> /// <param name="weekInterval">The WeekInterval of this event</param> public Time(byte hours, byte minutes, DateTime date, WeekInterval weekInterval) : this() { Hours = hours; Minutes = minutes; Date = date; WeekInterval = weekInterval; }
/// <summary> /// /// </summary> /// <param name="dayInterval">The day(s) of the week (Sun thru Sat)</param> /// <param name="weekInterval">The week(s) in which the schedule recurs</param> /// <param name="quarterInterval">The quarter(s) in which the schedule recurs</param> /// <param name="monthOfOfQuarterInterval"></param> public ScheduleDayInQuarter( DayInterval dayInterval, WeekInterval weekInterval, QuarterInterval quarterInterval, MonthOfQuarterInterval monthOfOfQuarterInterval) { _dayInterval = dayInterval; _weekInterval = weekInterval; _monthOfQuarterInterval = monthOfOfQuarterInterval; _quarterInterval = quarterInterval; }
public void GetTurnNumber(uint?expectedTurn, string date) { var interval = new WeekInterval { StartDay = DateTime.Parse("2019-02-04"), Duration = 2, StartOfWeek = DayOfWeek.Monday }; var turnNumber = interval.GetTurnNumber(DateTime.Parse(date)); Assert.Equal(expectedTurn, turnNumber); }
public void ListAllAssignmentsBetweenTwoDates(List <Assignment> expectedList, string startDate, string endDate) { var interval = new WeekInterval { Duration = 3, StartDay = DateTime.Parse("2019-01-28"), StartOfWeek = DayOfWeek.Monday }; var assignments = interval.GetAssignmentsBetween(DateTime.Parse(startDate), DateTime.Parse(endDate)); Assert.Equal(assignments, expectedList); }
public void SetMonthlyInterval(WeekInterval interval) { WeekInterval = interval; }
/// <summary> /// Creates a temporaral expression using day(s) of the week as well as a WeekOfMonth. /// /// var example1 = new ScheduleDayInWeekOfMonth(DayInterval.Sunday, WeekInterval.First); /// var example2 = new ScheduleDayInWeekOfMonth(DayInterval.Tuesday, WeekInterval.Second); /// var example3 = new ScheduleDayInWeekOfMonth(DayInterval.Friday, WeekInterval.Last); /// /// </summary> /// <param name="dayInterval">day of week</param> /// <param name="weekInterval">week interval</param> public ScheduleDayInWeekOfMonth(DayInterval dayInterval, WeekInterval weekInterval) { _dayInterval = dayInterval; _weekInterval = weekInterval; }
public ScheduleBuilder DuringMonth(WeekInterval interval) { this.DuringMonth((int)interval); return(this); }
public void ReadXml(System.Xml.XmlReader reader) { reader.MoveToContent(); reader.ReadStartElement(); WeekInterval = (WeekInterval)Enum.Parse(typeof(WeekInterval), reader.ReadElementString("interval")); Hours = byte.Parse(reader.ReadElementString("hours")); Minutes = byte.Parse(reader.ReadElementString("minutes")); Date = DateTime.Parse(reader.ReadElementString("date")); reader.ReadEndElement(); }
/// <summary> /// The holiday month, day, and count where the holiday falls on a different /// date every year, e.g., first Monday of September (Labor Day): /// /// var laborDay = new ScheduleFloatingHoliday(MonthOfYear.Sep, DayOfWeek.Monday, WeekInterval.First); /// </summary> /// <param name="monthOfYear"></param> /// <param name="dayOfWeek">Sun through Sat</param> /// <param name="weekInterval">First, Second, etc.</param> public ScheduleFloatingHoliday(MonthOfYear monthOfYear, DayOfWeek dayOfWeek, WeekInterval weekInterval) { _monthOfYear = monthOfYear; _dayOfWeek = dayOfWeek; _weekInterval = weekInterval; }