Esempio n. 1
0
        /// <summary>
        /// 지정한 년도, 분기의 시작 시각
        /// </summary>
        public static DateTime StartTimeOfQuarter(this int year, QuarterKind quarter,
                                                  int yearStartMonth = TimeSpec.CalendarYearStartMonth)
        {
            var months = (quarter.GetHashCode() - 1) * TimeSpec.MonthsPerQuarter;

            return(new DateTime(year, yearStartMonth, 1).AddMonths(months));
        }
        public void FirstCustomCalendarQuartersTest()
        {
            var               calendar     = TimeCalendar.New(October);
            const int         startYear    = 2004;
            const QuarterKind startQuarter = QuarterKind.First;
            const int         quarterCount = 5;

            var quarterRanges = new QuarterRangeCollection(startYear, startQuarter, quarterCount, calendar);

            quarterRanges.YearBaseMonth.Should().Be(October);
            quarterRanges.QuarterCount.Should().Be(quarterCount);
            quarterRanges.StartQuarter.Should().Be(startQuarter);
            quarterRanges.StartYear.Should().Be(startYear);
            quarterRanges.EndYear.Should().Be(2005);
            quarterRanges.EndQuarter.Should().Be(QuarterKind.First);

            var quarters = quarterRanges.GetQuarters().ToTimePeriodCollection();

            quarters.Count.Should().Be(quarterCount);
            quarters[0].IsSamePeriod(new QuarterRange(2004, QuarterKind.First, calendar)).Should().Be.True();
            quarters[1].IsSamePeriod(new QuarterRange(2004, QuarterKind.Second, calendar)).Should().Be.True();
            quarters[2].IsSamePeriod(new QuarterRange(2004, QuarterKind.Third, calendar)).Should().Be.True();
            quarters[3].IsSamePeriod(new QuarterRange(2004, QuarterKind.Fourth, calendar)).Should().Be.True();
            quarters[4].IsSamePeriod(new QuarterRange(2005, QuarterKind.First, calendar)).Should().Be.True();
        }
Esempio n. 3
0
        public static YearAndQuarter NextQuarter(this QuarterKind startQuarterKind)
        {
            int         year;
            QuarterKind quarter;

            NextQuarter(startQuarterKind, out year, out quarter);
            return(new YearAndQuarter(year, quarter));
        }
Esempio n. 4
0
        public static YearAndQuarter PreviousQuarter(this QuarterKind startQuarter)
        {
            int         year;
            QuarterKind quarterKind;

            PreviousQuarter(startQuarter, out year, out quarterKind);

            return(new YearAndQuarter(year, quarterKind));
        }
Esempio n. 5
0
        public static YearAndQuarter AddQuarter(this QuarterKind startQuarter, int startYear, int count)
        {
            int         year;
            QuarterKind quarterKind;

            AddQuarter(startQuarter, startYear, count, out year, out quarterKind);

            return(new YearAndQuarter(year, quarterKind.GetHashCode()));
        }
Esempio n. 6
0
        public static void AddQuarter(QuarterKind startQuarter, int startYear, int count, out int year, out QuarterKind quarter)
        {
            int offsetYear         = (Math.Abs(count) / TimeSpec.QuartersPerYear) + 1;
            int startQuarterCount  = ((startYear + offsetYear) * TimeSpec.QuartersPerYear) + ((int)startQuarter - 1);
            int targetQuarterCount = startQuarterCount + count;

            year    = (targetQuarterCount / TimeSpec.QuartersPerYear) - offsetYear;
            quarter = (QuarterKind)((targetQuarterCount % TimeSpec.QuartersPerYear) + 1);
        }
Esempio n. 7
0
        protected QuarterTimeRange(int startYear, QuarterKind startQuarter, int quarterCount, ITimeCalendar calendar)
            : base(GetPeriodOf(calendar, startYear, startQuarter.GetHashCode(), quarterCount), calendar)
        {
            StartYear = startYear;

            StartQuarter = startQuarter;
            QuarterCount = quarterCount;

            var endYearQuarter = TimeTool.AddQuarter(startQuarter, startYear, quarterCount - 1);

            EndYear    = endYearQuarter.Year ?? StartYear;
            EndQuarter = endYearQuarter.Quarter ?? StartQuarter;
        }
Esempio n. 8
0
        /// <summary>
        /// 지정한 달력 기준으로 지정년도, 분기의 기간을 구합니다.
        /// </summary>
        /// <param name="calendar"></param>
        /// <param name="year"></param>
        /// <param name="quarter"></param>
        /// <returns></returns>
        public static TimeSpan Quarter(int year, QuarterKind quarter = QuarterKind.First, Calendar calendar = null)
        {
            calendar = calendar ?? CurrentCalendar;
            var quarterMonths = TimeTool.GetMonthsOfQuarter(quarter);
            var duration      = TimeSpec.NoDuration;

            foreach (var quarterMonth in quarterMonths)
            {
                duration = duration.Add(Month(year, quarterMonth, calendar));
            }

            return(duration);
        }
Esempio n. 9
0
        /// <summary>
        /// 특정년도의 분기를 표현하는 문자열을 반환합니다. (2011년 2사분기)
        /// </summary>
        /// <param name="year"></param>
        /// <param name="quarter"></param>
        /// <returns></returns>
        public string GetQuarterOfYearName(int year, QuarterKind quarter)
        {
            switch (YearKind)
            {
            case YearKind.CalendarYear:
                return(TimeStrings.CalendarQuarterOfYearName(quarter, year));

            case YearKind.FiscalYear:
                return(TimeStrings.FiscalQuarterOfYearName(quarter, year));

            case YearKind.SchoolYear:
                return(TimeStrings.SchoolQuarterOfYearName(quarter, year));

            default:
                return(TimeStrings.SystemQuarterOfYearName(quarter, year));
            }
        }
Esempio n. 10
0
        public static int[] GetMonthsOfQuarter(this QuarterKind quarter)
        {
            switch (quarter)
            {
            case QuarterKind.First:
                return(TimeSpec.FirstQuarterMonths);

            case QuarterKind.Second:
                return(TimeSpec.SecondQuarterMonths);

            case QuarterKind.Third:
                return(TimeSpec.ThirdQuarterMonths);

            case QuarterKind.Fourth:
                return(TimeSpec.FourthQuarterMonths);
            }
            throw new InvalidOperationException("invalid year quarter " + quarter);
        }
        public void SingleQuartersTest()
        {
            const int         startYear    = 2004;
            const QuarterKind startQuarter = QuarterKind.Second;

            var quarterRanges = new QuarterRangeCollection(startYear, startQuarter, 1);

            quarterRanges.YearBaseMonth.Should().Be(1);
            quarterRanges.QuarterCount.Should().Be(1);
            quarterRanges.StartQuarter.Should().Be(startQuarter);
            quarterRanges.StartYear.Should().Be(startYear);
            quarterRanges.EndYear.Should().Be(startYear);
            quarterRanges.EndQuarter.Should().Be(QuarterKind.Second);

            var quarters = quarterRanges.GetQuarters().ToTimePeriodCollection();

            quarters.Count.Should().Be(1);
            quarters[0].IsSamePeriod(new QuarterRange(2004, QuarterKind.Second)).Should().Be.True();
        }
Esempio n. 12
0
 public QuarterRangeCollection(int year, QuarterKind quarter, int quarterCount, ITimeCalendar calendar)
     : base(year, quarter, quarterCount, calendar)
 {
 }
Esempio n. 13
0
 public static void NextQuarter(this QuarterKind startQuarterKind, out int year, out QuarterKind quarter)
 {
     AddQuarter(startQuarterKind, 1, out year, out quarter);
 }
Esempio n. 14
0
 public QuarterRangeCollection(int year, QuarterKind quarter, int quarterCount)
     : this(year, quarter, quarterCount, new TimeCalendar())
 {
 }
Esempio n. 15
0
 public QuarterRange(int year, QuarterKind quarter) : this(year, quarter, new TimeCalendar())
 {
 }
Esempio n. 16
0
 protected QuarterTimeRange(int startYear, QuarterKind startQuarter, int quarterCount)
     : this(startYear, startQuarter, quarterCount, new TimeCalendar())
 {
 }
Esempio n. 17
0
 public static string CalendarQuarterOfYearName(QuarterKind quarter, int year)
 {
     return(Format(CalendarQuarterOfYearNameFormat, (int)quarter, year));
 }
Esempio n. 18
0
 /// <summary>
 /// 지정한 년도, 분기의 완료 시각
 /// </summary>
 public static DateTime EndTimeOfQuarter(this int year, QuarterKind quarter, int yearStartMonth = TimeSpec.CalendarYearStartMonth)
 {
     return
         (StartTimeOfQuarter(year, quarter, yearStartMonth).AddMonths(TimeSpec.MonthsPerQuarter).Add(TimeSpec.MinNegativeDuration));
 }
Esempio n. 19
0
 /// <summary>
 /// 해당 분기의 시작월
 /// </summary>
 /// <param name="quarter">해당 분기</param>
 /// <returns>해당분기의 시작월</returns>
 public static int StartMonthOfQuarter(this QuarterKind quarter)
 {
     return(TimeSpec.MonthsPerQuarter * ((int)quarter - 1) + 1);
 }
Esempio n. 20
0
 public static string SchoolQuarterName(QuarterKind quarter) {
     return Format(SchoolQuarterNameFormat, (int)quarter);
 }
Esempio n. 21
0
 /// <summary>
 /// 지정한 년도, 분기의 시작 시각
 /// </summary>
 public static DateTime StartTimeOfQuarter(this int year, QuarterKind quarter,
                                           int yearStartMonth = TimeSpec.CalendarYearStartMonth) {
     var months = (quarter.GetHashCode() - 1) * TimeSpec.MonthsPerQuarter;
     return new DateTime(year, yearStartMonth, 1).AddMonths(months);
 }
Esempio n. 22
0
 /// <summary>
 /// 지정한 년도, 분기의 완료 시각
 /// </summary>
 public static DateTime EndTimeOfQuarter(this int year, QuarterKind quarter, int yearStartMonth = TimeSpec.CalendarYearStartMonth) {
     return
         StartTimeOfQuarter(year, quarter, yearStartMonth).AddMonths(TimeSpec.MonthsPerQuarter).Add(TimeSpec.MinNegativeDuration);
 }
Esempio n. 23
0
 public static void PreviousQuarter(this QuarterKind startQuarter, out int year, out QuarterKind quarter)
 {
     AddQuarter(startQuarter, -1, out year, out quarter);
 }
Esempio n. 24
0
 public QuarterRangeCollection(int year, QuarterKind quarter, int quarterCount, ITimeCalendar calendar)
     : base(year, quarter, quarterCount, calendar) {}
Esempio n. 25
0
 public static void AddQuarter(this QuarterKind startQuarter, int count, out int year, out QuarterKind quarter)
 {
     AddQuarter(startQuarter, 0, count, out year, out quarter);
 }
Esempio n. 26
0
 public static string FiscalQuarterName(QuarterKind quarter)
 {
     return(Format(FiscalQuarterNameFormat, (int)quarter));
 }
Esempio n. 27
0
 public static string SchoolQuarterOfYearName(QuarterKind quarter, int year) {
     return Format(SchoolQuarterOfYearNameFormat, (int)quarter, year);
 }
Esempio n. 28
0
 public static string SchoolQuarterName(QuarterKind quarter)
 {
     return(Format(SchoolQuarterNameFormat, (int)quarter));
 }
Esempio n. 29
0
 public static string CalendarQuarterName(QuarterKind quarter) {
     return Format(CalendarQuarterNameFormat, (int)quarter);
 }
Esempio n. 30
0
 public static string SchoolQuarterOfYearName(QuarterKind quarter, int year)
 {
     return(Format(SchoolQuarterOfYearNameFormat, (int)quarter, year));
 }
Esempio n. 31
0
 public static YearAndQuarter AddQuarter(this QuarterKind startQuarter, int count)
 {
     return(AddQuarter(startQuarter, 0, count));
 }
Esempio n. 32
0
 public static string CalendarQuarterOfYearName(QuarterKind quarter, int year) {
     return Format(CalendarQuarterOfYearNameFormat, (int)quarter, year);
 }
Esempio n. 33
0
 public QuarterRange(int year, QuarterKind quarter) : this(year, quarter, new TimeCalendar()) {}
Esempio n. 34
0
 public static string SystemQuarterName(QuarterKind quarter) {
     return Format(SystemQuarterNameFormat, (int)quarter);
 }
Esempio n. 35
0
 public QuarterRangeCollection(int year, QuarterKind quarter, int quarterCount)
     : this(year, quarter, quarterCount, new TimeCalendar()) {}
Esempio n. 36
0
 public static string FiscalQuarterName(QuarterKind quarter) {
     return Format(FiscalQuarterNameFormat, (int)quarter);
 }
Esempio n. 37
0
 public static void PreviousQuarter(this QuarterKind startQuarter, out int year, out QuarterKind quarter) {
     AddQuarter(startQuarter, -1, out year, out quarter);
 }
Esempio n. 38
0
 public QuarterRange(int year, QuarterKind quarter, ITimeCalendar calendar) : base(year, quarter, 1, calendar)
 {
 }
Esempio n. 39
0
 public static void AddQuarter(this QuarterKind startQuarter, int count, out int year, out QuarterKind quarter) {
     AddQuarter(startQuarter, 0, count, out year, out quarter);
 }
Esempio n. 40
0
        public static void AddQuarter(QuarterKind startQuarter, int startYear, int count, out int year, out QuarterKind quarter) {
            int offsetYear = (Math.Abs(count) / TimeSpec.QuartersPerYear) + 1;
            int startQuarterCount = ((startYear + offsetYear) * TimeSpec.QuartersPerYear) + ((int)startQuarter - 1);
            int targetQuarterCount = startQuarterCount + count;

            year = (targetQuarterCount / TimeSpec.QuartersPerYear) - offsetYear;
            quarter = (QuarterKind)((targetQuarterCount % TimeSpec.QuartersPerYear) + 1);
        }
Esempio n. 41
0
 /// <summary>
 /// 해당 분기의 마지막 월
 /// </summary>
 /// <param name="quarter">해당 분기</param>
 /// <returns>해당 분기의 마지막 월</returns>
 public static int EndMonthOfQuarter(this QuarterKind quarter)
 {
     return(TimeSpec.MonthsPerQuarter * (int)quarter);
 }
Esempio n. 42
0
 public QuarterRange(int year, QuarterKind quarter, ITimeCalendar calendar) : base(year, quarter, 1, calendar) {}
Esempio n. 43
0
 public static void NextQuarter(this QuarterKind startQuarterKind, out int year, out QuarterKind quarter) {
     AddQuarter(startQuarterKind, 1, out year, out quarter);
 }