/// <summary>
        /// Увеличивает время на указанное число интервалов статистики.
        /// </summary>
        /// <param name="date">Исходное время.</param>
        /// <param name="intervalType">Тип интервала статистики.</param>
        /// <param name="intervalsNum">Число интервалов статистики, на которое требуется изменить исходное время.</param>
        /// <returns>Полученное время.</returns>
        private DateTime AddStatIntervalToDate(DateTime date, StatisticsInterval intervalType, int intervalsNum)
        {
            switch (intervalType)
            {
            case StatisticsInterval.OneSecond:
                return(date.AddSeconds(intervalsNum));

            case StatisticsInterval.TenSeconds:
                return(date.AddSeconds(intervalsNum * 10));

            case StatisticsInterval.OneMinute:
                return(date.AddMinutes(intervalsNum));

            case StatisticsInterval.FiveMinutes:
                return(date.AddMinutes(intervalsNum * 5));

            case StatisticsInterval.TenMinutes:
                return(date.AddMinutes(intervalsNum * 10));

            case StatisticsInterval.HalfAnHour:
                return(date.AddMinutes(intervalsNum * 30));

            case StatisticsInterval.Hour:
                return(date.AddHours(intervalsNum));

            case StatisticsInterval.Day:
                return(date.AddDays(intervalsNum));

            case StatisticsInterval.Month:
                return(date.AddMonths(intervalsNum));

            case StatisticsInterval.Quarter:
                return(date.AddMonths(intervalsNum * 3));

            case StatisticsInterval.Year:
                return(date.AddYears(intervalsNum));

            default:
                throw new Exception("Неизвестный интервал статистики: " + intervalType.ToString());
            }
        }
        private DateTime GetStartOfInterval(DateTime date, StatisticsInterval intervalType)
        {
            switch (intervalType)
            {
            case StatisticsInterval.OneSecond:
                return(new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second));

            case StatisticsInterval.TenSeconds:
                return(new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second / 10 * 10));

            case StatisticsInterval.OneMinute:
                return(new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, 0));

            case StatisticsInterval.FiveMinutes:
                return(new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute / 5 * 5, 0));

            case StatisticsInterval.TenMinutes:
                return(new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute / 10 * 10, 0));

            case StatisticsInterval.HalfAnHour:
                return(new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute / 30 * 30, 0));

            case StatisticsInterval.Hour:
                return(new DateTime(date.Year, date.Month, date.Day, date.Hour, 0, 0));

            case StatisticsInterval.Day:
                return(new DateTime(date.Year, date.Month, date.Day, 0, 0, 0));

            case StatisticsInterval.Month:
                return(new DateTime(date.Year, date.Month, 1, 0, 0, 0));

            case StatisticsInterval.Quarter:
                return(new DateTime(date.Year, (date.Month - 1) / 3 * 3 + 1, 1, 0, 0, 0));

            case StatisticsInterval.Year:
                return(new DateTime(date.Year, 1, 1, 0, 0, 0));

            default:
                throw new Exception("Неизвестный интервал статистики: " + intervalType.ToString());
            }
        }
Beispiel #3
0
        private long StatisticsIntervalToMilliseconds(StatisticsInterval interval)
        {
            switch (interval)
            {
            case StatisticsInterval.OneSecond:
                return(1000L);

            case StatisticsInterval.TenSeconds:
                return(10 * 1000L);

            case StatisticsInterval.OneMinute:
                return(60 * 1000L);

            case StatisticsInterval.FiveMinutes:
                return(5 * 60 * 1000L);

            case StatisticsInterval.TenMinutes:
                return(10 * 60 * 1000L);

            case StatisticsInterval.HalfAnHour:
                return(30 * 60 * 1000L);

            case StatisticsInterval.Hour:
                return(60 * 60 * 1000L);

            case StatisticsInterval.Day:
                return(24 * 60 * 60 * 1000L);

            case StatisticsInterval.Month:
                return(30 * 24 * 60 * 60 * 1000L);

            case StatisticsInterval.Quarter:
                return(3 * 30 * 24 * 60 * 60 * 1000L);

            case StatisticsInterval.Year:
                return(12 * 30 * 24 * 60 * 60 * 1000L);
            }

            return(60 * 1000L);
        }
Beispiel #4
0
        private void ResetTimer(StatisticsInterval interval)
        {
            long ms = StatisticsIntervalToMilliseconds(interval);

            _timer.Change(ms, ms);
        }