/// <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()); } }
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); }
private void ResetTimer(StatisticsInterval interval) { long ms = StatisticsIntervalToMilliseconds(interval); _timer.Change(ms, ms); }