private DateTime GetNextDate(DateTime dt, int xDayOfMonth, MonthOfTheYear monthOfYear, int everyXYears) { int daysOfMonth = DateTime.DaysInMonth(dt.Year, dt.Month); do { if (nextTentativeDate == DateTime.MinValue && (MonthOfTheYear)dt.Month == monthOfYear && dt.Day <= xDayOfMonth && xDayOfMonth <= daysOfMonth) { nextTentativeDate = new DateTime(dt.Year, Convert.ToInt16(monthOfYear), xDayOfMonth, dt.Hour, dt.Minute, 0); } else { dt = dt.AddYears(everyXYears); daysOfMonth = DateTime.DaysInMonth(dt.Year, Convert.ToInt16(monthOfYear)); if (xDayOfMonth <= daysOfMonth) { nextTentativeDate = new DateTime(dt.Year, Convert.ToInt16(monthOfYear), xDayOfMonth, dt.Hour, dt.Minute, 0); } else { nextTentativeDate = new DateTime(dt.Year, Convert.ToInt16(monthOfYear), daysOfMonth, dt.Hour, dt.Minute, 0); } } } while (nextTentativeDate <= utc); return(nextTentativeDate); }
public override int GetHashCode() { var hashCode = -1865746542; hashCode = hashCode * -1521134295 + MonthOfTheYear.GetHashCode(); hashCode = hashCode * -1521134295 + Year.GetHashCode(); return(hashCode); }
public Month(MonthOfTheYear name) { this.Name = name; if ((int)Name <= 7) { if ((int)Name == 1 && CountDecembers == 0) { StartDay = RandomDay(); GenerateDays(31); } else if ((int)Name == 1 && CountDecembers > 0) { GenerateDays(31); } if ((int)Name == 2) { GenerateDays(28); } if ((int)Name != 1 && (int)Name % 2 != 0) { GenerateDays(31); } if ((int)Name % 2 == 0 && (int)Name != 2) { GenerateDays(30); } } else { if ((int)Name % 2 != 0) { GenerateDays(30); } else if ((int)Name % 2 == 0 && (int)Name != 12) { GenerateDays(31); } else if ((int)Name == 12) { GenerateDays(31); CountDecembers++; } } }
public DateTime?GetNextYearlyScheduleDate(Schedule schedule, DateTime scheduledDate) { processDate = scheduledDate; nextSchedule = processDate; var hours = processDate.Hour; var min = processDate.Minute; if (schedule.YearlySchedule != null) { int everyXYears = schedule.YearlySchedule.YearsInterval; int xDayOfMonth = schedule.YearlySchedule.DayOfMonth; MonthOfTheYear monthOfYear = schedule.YearlySchedule.Month; if (processDate == schedule.StartBoundary) { do { nextTentativeDate = GetNextDate(processDate, xDayOfMonth, monthOfYear, everyXYears); } while (nextTentativeDate <= utc && nextTentativeDate < schedule.StartBoundary); } else { do { processDate = processDate.AddYears(everyXYears); int daysOfMonth = DateTime.DaysInMonth(processDate.Year, Convert.ToInt16(monthOfYear)); if (xDayOfMonth <= daysOfMonth) { nextTentativeDate = new DateTime(processDate.Year, Convert.ToInt16(monthOfYear), xDayOfMonth, processDate.Hour, processDate.Minute, processDate.Second); } else { nextTentativeDate = new DateTime(processDate.Year, Convert.ToInt16(monthOfYear), daysOfMonth); } } while (nextTentativeDate <= utc); } #region nextTentativeDate = new DateTime(nextTentativeDate.Year, nextTentativeDate.Month, nextTentativeDate.Day, hours, min, 0); switch (schedule.EndType) { case EndType.EndDate: if (nextTentativeDate <= schedule.EndBoundary) { nextSchedule = nextTentativeDate; } else { nextSchedule = null; } break; case EndType.NoEndDate: nextSchedule = nextTentativeDate; break; case EndType.EndAfter: DataTable dataTable = new DataTable(); var whereColumns = new List <ConditionColumn>(); whereColumns.Add(new ConditionColumn { ColumnName = GlobalAppSettings.DbColumns.DB_ScheduleLog.ScheduleId, Condition = Conditions.Equals, Value = schedule.ScheduleId }); whereColumns.Add(new ConditionColumn { ColumnName = GlobalAppSettings.DbColumns.DB_ScheduleLog.ExecutedDate, Condition = Conditions.GreaterThanOrEquals, Value = schedule.StartBoundary, LogicalOperator = LogicalOperators.AND }); whereColumns.Add(new ConditionColumn { ColumnName = GlobalAppSettings.DbColumns.DB_ScheduleLog.IsOnDemand, Condition = Conditions.GreaterThanOrEquals, Value = false, LogicalOperator = LogicalOperators.AND }); try { dataTable = dataProvider.ExecuteReaderQuery( queryBuilder.SelectAllRecordsFromTable( GlobalAppSettings.DbColumns.DB_ScheduleLog.DB_TableName, whereColumns)) .DataTable; var recurrenceCount = dataTable.Rows.Count; if (recurrenceCount > 0) { if (recurrenceCount < schedule.Occurrences) { nextSchedule = nextTentativeDate; } else { nextSchedule = null; } } else { nextSchedule = nextTentativeDate; } } catch (SqlException e) { } break; } #endregion } return(nextSchedule); }
public static int ToInt(this MonthOfTheYear monthOfTheYear) { return((int)monthOfTheYear + 1); }
public Month(MonthOfTheYear name) { Name = name; if (Name == MonthOfTheYear.Jan || Name == MonthOfTheYear.Mar || Name == MonthOfTheYear.May || Name == MonthOfTheYear.Jul || Name == MonthOfTheYear.Aug || Name == MonthOfTheYear.Oct || Name == MonthOfTheYear.Dec) { for (int i = 1; i <= 31; i++) { if (i % 7 == 1) { Days.Add(new Day(DayOfTheWeek.Mon, i)); } if (i % 7 == 2) { Days.Add(new Day(DayOfTheWeek.Tue, i)); } if (i % 7 == 3) { Days.Add(new Day(DayOfTheWeek.Wed, i)); } if (i % 7 == 4) { Days.Add(new Day(DayOfTheWeek.Thu, i)); } if (i % 7 == 5) { Days.Add(new Day(DayOfTheWeek.Fri, i)); } if (i % 7 == 6) { Days.Add(new Day(DayOfTheWeek.Sat, i)); } if (i % 7 == 0) { Days.Add(new Day(DayOfTheWeek.Sun, i)); } } } else { if (Name == MonthOfTheYear.Apr || Name == MonthOfTheYear.June || Name == MonthOfTheYear.Sep || Name == MonthOfTheYear.Nov) { for (int i = 1; i <= 30; i++) { if (i % 7 == 1) { Days.Add(new Day(DayOfTheWeek.Mon, i)); } if (i % 7 == 2) { Days.Add(new Day(DayOfTheWeek.Tue, i)); } if (i % 7 == 3) { Days.Add(new Day(DayOfTheWeek.Wed, i)); } if (i % 7 == 4) { Days.Add(new Day(DayOfTheWeek.Thu, i)); } if (i % 7 == 5) { Days.Add(new Day(DayOfTheWeek.Fri, i)); } if (i % 7 == 6) { Days.Add(new Day(DayOfTheWeek.Sat, i)); } if (i % 7 == 0) { Days.Add(new Day(DayOfTheWeek.Sun, i)); } } } else { for (int i = 1; i <= 28; i++) { if (i % 7 == 1) { Days.Add(new Day(DayOfTheWeek.Mon, i)); } if (i % 7 == 2) { Days.Add(new Day(DayOfTheWeek.Tue, i)); } if (i % 7 == 3) { Days.Add(new Day(DayOfTheWeek.Wed, i)); } if (i % 7 == 4) { Days.Add(new Day(DayOfTheWeek.Thu, i)); } if (i % 7 == 5) { Days.Add(new Day(DayOfTheWeek.Fri, i)); } if (i % 7 == 6) { Days.Add(new Day(DayOfTheWeek.Sat, i)); } if (i % 7 == 0) { Days.Add(new Day(DayOfTheWeek.Sun, i)); } } } } firstDay = Days[0]; lastDay = Days[Days.Count - 1]; }
public Month GetMonth(MonthOfTheYear month) => new DateTime(_dateTime.Year, month.ToInt(), 1);