コード例 #1
0
        /// <summary>
        /// Gets an enumeration of the occurences ranges of this entry within the given interval.
        /// </summary>
        /// <param name="fromDt"></param>
        /// <param name="toDt"></param>
        /// <returns></returns>
        public override IEnumerable <ScheduleDateTimeRange> GetRangesInPeriod(DateTime fromDt, DateTime toDt)
        {
            DateTime startDt = fromDt.Date;
            DateTime endDt   = toDt.Date + TimeSpan.FromDays(1);

            if (EndTimeInSeconds > SecondsPerDay)
            {
                startDt -= TimeSpan.FromDays(1);
            }

            DateTime wrkDt = startDt;

            for (; wrkDt < endDt; wrkDt += TimeSpan.FromDays(1))
            {
                ScheduleDateTimeRange range = GetRangeForDay(wrkDt);
                if (range != null)
                {
                    yield return(range);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Checks whether the given time intersects with this entry.
        /// </summary>
        /// <param name="timeToTest"></param>
        /// <returns></returns>
        protected override bool Clash(DateTime timeToTest)
        {
            DateTime testTime = (Options & ScheduleEntryOptions.EVETime) != 0 ? timeToTest.ToUniversalTime() : timeToTest;

            ScheduleDateTimeRange range = GetRangeForDay(testTime.Date);

            if (range == null)
            {
                return(false);
            }

            DateTime startDate = StartDate.Add(range.From.TimeOfDay);

            // in the event m_endDate is set to Forever (DateTime.MaxValue) we can't add anything to it
            DateTime endDate = EndDate == DateTime.MaxValue ? EndDate : EndDate.Add(range.From.TimeOfDay);

            if (startDate < testTime && testTime < endDate)
            {
                return(range.From < testTime && testTime < range.To);
            }

            return(false);
        }