Пример #1
0
        public static CalendarDate Add(CalendarDate x, Duration y)
        {
            if (y is CalendarDateDuration)
            {
                return Add(x, (CalendarDateDuration)y);
            }

            if (y is OrdinalDateDuration)
            {
                return Add(x, ((OrdinalDateDuration)y).ToCalendarDateDuration());
            }

            if (y is DesignatedDuration)
            {
                return Add(x, (DesignatedDuration)y);
            }

            throw new InvalidOperationException($"A {y.GetType()} cannot be added to a {x.GetType()}.");
        }
Пример #2
0
        public static CalendarDate Subtract(CalendarDate x, Duration y)
        {
            if (y is CalendarDateDuration)
            {
                return Subtract(x, (CalendarDateDuration)y);
            }

            if (y is OrdinalDateDuration)
            {
                return Subtract(x, ((OrdinalDateDuration)y).ToCalendarDateDuration());
            }

            if (y is DesignatedDuration)
            {
                return Subtract(x, (DesignatedDuration)y);
            }

            throw new InvalidOperationException($"A {y.GetType()} cannot be subtracted from a {x.GetType()}.");
        }
Пример #3
0
        internal static TimeSpan Subtract(CalendarDate later, TimePoint earlier)
        {
            if (earlier is CalendarDate)
            {
                return later - (CalendarDate)earlier;
            }

            if (earlier is OrdinalDate)
            {
                return later - ((OrdinalDate)earlier).ToCalendarDate();
            }

            if (earlier is WeekDate)
            {
                return later - ((WeekDate)earlier).ToCalendarDate();
            }

            throw new InvalidOperationException($"A {earlier.GetType()} cannot be subtracted from a {later.GetType()}");
        }