Exemple #1
0
        /// <summary>
        /// Gets a verbose name for this period
        /// </summary>
        /// <returns></returns>
        public String GetPeriodName()
        {
            String output = "";

            historyBinSize binSize = span.GetPeriodSize();

            switch (binSize)
            {
            case historyBinSize.quartal:
                output = start.Year.ToString() + start.GetQuartalName();
                break;

            case historyBinSize.year:
                output = start.Year.ToString();
                break;

            case historyBinSize.month:
                output = start.ToString("yyyy-MM");
                break;
            }

            if (output == "")
            {
                output = start.ToShortDateString() + "-" + end.ToShortDateString();
            }
            return(output);
        }
        public static DateTime ToEndDateTime(this historyBinSize binSize, DateTime fromDate, Int32 numberOfBins = 1)
        {
            DateTime end = fromDate;

            for (int i = 0; i < numberOfBins; i++)
            {
                switch (binSize)
                {
                case historyBinSize.day:
                    end = fromDate.AddDays(1);
                    break;

                case historyBinSize.week:
                    end = fromDate.AddDays(7);
                    break;

                case historyBinSize.twoWeeks:
                    end = fromDate.AddDays(14);
                    break;

                case historyBinSize.ThreeYears:
                    end = fromDate.AddYears(3);
                    break;

                case historyBinSize.FiveYears:
                    end = fromDate.AddYears(3);
                    break;

                case historyBinSize.month:
                    end = fromDate.AddMonths(1);
                    break;

                case historyBinSize.quartal:
                    end = fromDate.AddMonths(3);

                    break;

                case historyBinSize.year:
                    end = fromDate.AddYears(1);
                    break;

                default:
                    break;
                }
            }

            return(end);
        }
        public static historyBinSize GetPeriodSize(this TimeSpan span)
        {
            historyBinSize output = historyBinSize.undefined;


            if (span.TotalDays == 7)
            {
                return(historyBinSize.week);
            }

            if (span.TotalDays == 14)
            {
                return(historyBinSize.twoWeeks);
            }

            if (span.TotalDays == 1)
            {
                return(historyBinSize.day);
            }

            if (span.TotalDays > 88 && span.TotalDays < 93)
            {
                return(historyBinSize.quartal);
            }

            if (span.TotalDays > 28 && span.TotalDays < 32)
            {
                return(historyBinSize.month);
            }

            if (span.TotalDays == 365)
            {
                return(historyBinSize.year);
            }

            if (span.TotalDays == (365 * 3))
            {
                return(historyBinSize.ThreeYears);
            }

            if (span.TotalDays == (365 * 5))
            {
                return(historyBinSize.FiveYears);
            }

            return(historyBinSize.custom);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="historyPeriodCollection"/> class.
        /// </summary>
        /// <param name="_start">The start.</param>
        /// <param name="_end">The end.</param>
        /// <param name="periodSize">Size of the period.</param>
        /// <param name="lastPeriodEqual">if set to <c>true</c> the last period will be extended over <c>_end</c> date, to be equal with other periods in the collection</param>
        public historyPeriodCollection(DateTime _start, DateTime _end, historyBinSize periodSize, Boolean lastPeriodEqual = true)
        {
            DateTime      head       = _start;
            historyPeriod lastPeriod = null;

            while (head < _end)
            {
                lastPeriod = periodSize.ToPeriod(head);
                Add(lastPeriod);
                head = lastPeriod.end;
            }

            if (!lastPeriodEqual)
            {
                lastPeriod.end = _end;
            }
        }
        public static TimeSpan ToTimeSpan(this historyBinSize binSize, DateTime fromDate, Int32 numberOfBins = 1)
        {
            DateTime end = ToEndDateTime(binSize, fromDate, numberOfBins);

            return(end.Subtract(fromDate));
        }
        public static historyPeriod ToPeriod(this historyBinSize binSize, DateTime fromDate, Int32 numberOfBins = 1)
        {
            DateTime end = ToEndDateTime(binSize, fromDate, numberOfBins);

            return(new historyPeriod(fromDate, end));
        }