コード例 #1
0
ファイル: Scheduler.cs プロジェクト: 1aurent/CloudBackup
            DateTime GetRuntimeForMonthly(DateTime now, MonthlySchedule schedule)
            {
                var reference = now;
                for (;;)
                {
                    var time = new DateTime(reference.Year, reference.Month, 1);
                    time = time.AddMonths(AdjustEvery(reference.Month, schedule.Every));
                    switch (schedule.RelativeTo)
                    {
                        case JobRelativeTo.BeginOfTheMonth:
                            time = time.AddDays(schedule.DayOffset);
                            break;
                        case JobRelativeTo.EndOfTheMonth:
                            time = time.AddMonths(1).AddDays(-(schedule.DayOffset + 1));
                            break;
                        case JobRelativeTo.FirstSundayOfTheMonth:
                            if (time.DayOfWeek != DayOfWeek.Sunday) time = time.AddDays(7 - ((int) time.DayOfWeek));
                            time = time.AddDays(schedule.DayOffset);
                            break;
                    }

                    time = time.AddMinutes(schedule.RunAt.Hour*60 + schedule.RunAt.Minute);
                    if (time > now) return time;

                    reference = reference.AddMonths(1);
                }
            }
コード例 #2
0
ファイル: JobSchedule.cs プロジェクト: 1aurent/CloudBackup
 public JobSchedule()
 {
     ScheduleType = JobScheduleType.Weekly;
     Daily = new DailySchedule();
     Weekly = new WeeklySchedule();
     Monthly = new MonthlySchedule();
 }