public DateTime Add(DateTime date, CalendarTimeUnit timeUnit, int value, TimeZoneInfo timeZone) { var dateInCalendarTimeZone = TimeZoneInfo.ConvertTime(date, timeZone, _calendar.TimeZone); var result = _provider.Add(dateInCalendarTimeZone, timeUnit, value); return(TimeZoneInfo.ConvertTime(result, _calendar.TimeZone, timeZone)); }
/// <summary> /// Get calculation mechanism by given time unit. /// </summary> /// <param name="timeUnit">Time unit.</param> /// <returns>Calculation mechanism.</returns> public virtual BaseCountTerm GetCountTerm(CalendarsTimeUnit timeUnit) { switch (timeUnit) { case CalendarsTimeUnit.Minute: return(ClassFactory.Get <MinuteCountTerm>()); case CalendarsTimeUnit.WorkingMinute: return(ClassFactory.Get <WorkingMinuteCountTerm>()); case CalendarsTimeUnit.Hour: return(ClassFactory.Get <HourCountTerm>()); case CalendarsTimeUnit.WorkingHour: return(ClassFactory.Get <WorkingHourCountTerm>()); case CalendarsTimeUnit.Day: return(ClassFactory.Get <DayCountTerm>()); case CalendarsTimeUnit.WorkingDay: return(ClassFactory.Get <WorkingDayCountTerm>()); default: var errorMessage = "Unable to create a corresponding count term. Time unit is unspecified."; throw new ArgumentException(errorMessage); } }
/// <summary> /// Initializes a new instance of the <see cref="CalendarOperationProvider"/> class. /// </summary> /// <param name="calendar">The calendar.</param> /// <param name="timeUnit">The time unit.</param> public CalendarOperationProvider(ICalendar <ICalendarDay> calendar, CalendarTimeUnit timeUnit) { _calendar = calendar; var factory = ClassFactory.Get <CalendarCountTermFactory>(); _countTerm = factory.GetCountTerm(timeUnit); }
public DateTime Add(DateTime dateTime, CalendarTimeUnit timeUnit, int value) { if (value <= 0) { return(dateTime); } var factory = ClassFactory.Get <CalendarCountTermFactory>(); BaseCountTerm countTerm = factory.GetCountTerm(timeUnit); IEnumerable <ICalendarDay> days = GetDays(countTerm, dateTime, value); return(countTerm.Calculate(days, value)); }
/// <summary> /// Gets calendar operation provider. /// </summary> /// <param name="calendar">The calendar.</param> /// <param name="timeUnit">The time unit.</param> /// <returns>Calendar operation provider.</returns> protected ICalendarOperationProvider GetProvider(ICalendar <ICalendarDay> calendar, CalendarTimeUnit timeUnit) { if (_calculationLogStore != null) { return(new CalendarOperationProvider(calendar, timeUnit, _calculationLogStore)); } return(new CalendarOperationProvider(calendar, timeUnit)); }
public DateTime Add(DateTime date, CalendarTimeUnit timeUnit, int value) { return(_provider.Add(date, timeUnit, value)); }
/// <summary> /// Initializes a new instance of the <see cref="CalendarOperationProvider"/> class. /// </summary> /// <param name="calendar">The calendar.</param> /// <param name="timeUnit">The time unit.</param> /// <param name="logStore">Store of term calculation logs<see cref="TermCalculationLogStore"/></param> public CalendarOperationProvider(ICalendar <ICalendarDay> calendar, CalendarTimeUnit timeUnit, TermCalculationLogStore logStore) : this(calendar, timeUnit) { _countTerm.TermCalculationLogStore = logStore; }
/// <summary> /// Gets calendar operation provider. /// </summary> /// <param name="calendar">The calendar.</param> /// <param name="timeUnit">The time unit.</param> /// <returns>Calendar operation provider.</returns> protected ICalendarOperationProvider GetProvider(ICalendar <ICalendarDay> calendar, CalendarTimeUnit timeUnit) { return(new CalendarOperationProvider(calendar, timeUnit)); }