/// <summary> /// <paramref name="moment"/>이 속하면서, <paramref name="periodKind"/>에 해당하는 <see cref="ICalendarTimeRange"/>을 구합니다. /// </summary> /// <param name="moment"></param> /// <param name="periodKind"></param> /// <param name="periodCount"></param> /// <param name="timeCalendar"></param> /// <returns></returns> public static ICalendarTimeRange GetPeriodsOf(this DateTime moment, PeriodKind periodKind, int periodCount, ITimeCalendar timeCalendar) { if (IsDebugEnabled) { log.Debug("날짜[{0}]가 속한 기간종류[{1}]의 기간을 구합니다. periodCount=[{2}], timeCalendar=[{3}]", moment.ToSortableString(), periodKind, periodCount, timeCalendar); } switch (periodKind) { case PeriodKind.Year: return(GetYearRanges(moment, periodCount, timeCalendar)); case PeriodKind.Halfyear: return(GetHalfyearRanges(moment, periodCount, timeCalendar)); case PeriodKind.Quarter: return(GetQuarterRanges(moment, periodCount, timeCalendar)); case PeriodKind.Month: return(GetMonthRanges(moment, periodCount, timeCalendar)); case PeriodKind.Week: return(GetWeekRanges(moment, periodCount, timeCalendar)); case PeriodKind.Day: return(GetDayRanges(moment, periodCount, timeCalendar)); case PeriodKind.Hour: return(GetHourRanges(moment, periodCount, timeCalendar)); case PeriodKind.Minute: return(GetMinuteRanges(moment, periodCount, timeCalendar)); case PeriodKind.Second: return(new CalendarTimeRange(moment.TrimToMillisecond(), DurationUtil.Seconds(periodCount), timeCalendar)); default: throw new NotSupportedException("지원하지 않는 TimePeriod 종류입니다. periodKind=" + periodKind); } }
/// <summary> /// <paramref name="start"/>부터 상대적으로 <paramref name="seconds"/> 초수 만큼의 기간 /// </summary> /// <param name="start">시작 시각</param> /// <param name="seconds">시간 간격 (초수)</param> public static TimeRange GetRelativeSecondPeriod(this DateTime start, int seconds) { return(new TimeRange(start, DurationUtil.Seconds(seconds))); }