Пример #1
0
		public static DateRange FindIntersect(DateRange t1, DateRange t2)
		{

			var iRange = new DateRange
				             {
					             Start = t1.Start < t2.Start ? t2.Start : t1.Start,
					             End = t1.End < t2.End ? t1.End : t2.End
				             };

			return iRange.Start >= iRange.End ? null : iRange;
		}
Пример #2
0
        /// <summary>
        /// Returns -1 no conflict, Return 0 ignore first Return 1 ignore 2nd
        /// </summary>
        private static int IsConflictOrOverLap(ICongestionRate cp1, ICongestionRate cp2, Day day, VehicleType type)
        {
            var cr1DateRange = new DateRange(cp1.Start, cp1.End);
            var cr2DateRange = new DateRange(cp2.Start, cp2.End);

            var intersect = DateTimeIntersect.FindIntersect(cr1DateRange, cr2DateRange);

            if (intersect == null) return -1;

            return SelectTheMoreSpecific(cp1, cp2, day, type);
        }
Пример #3
0
 private static DateRange GetIntersectingTime(DateTime start, DateTime end, ICongestionRate rate)
 {
     var timeSpent = new DateRange(start, end);
     var congestionRateRange = new DateRange(AddDatePartToCongestionTime(start, rate.Start), AddDatePartToCongestionTime(start, rate.End, true));
     return DateTimeIntersect.FindIntersect(timeSpent, congestionRateRange);
 }