//按时间分开 private void DoTimeSplitStatistics(ObjectInfo Aobject) { DateTime EndTime = DateTime.Today; DateTime StartTime = IServiceConfigInfo.StartTime.Date; DateTimeSplite LDateTimeSpliteTemp; while (StartTime < EndTime) { DateTime TempStartTime = StartTime; DateTime TempStopTime = StartTime.AddDays(1); ///更新天的数据 DoRealStatistics(StartTime, StartTime.AddDays(1), Aobject, EnumSliceType.DaySlice); ///更新周的数据 LDateTimeSpliteTemp = new DateTimeSplite(); LDateTimeSpliteTemp = GetWeekStartAndStopTime(StartTime, IGlobalSetting); DoRealStatistics(LDateTimeSpliteTemp.StartStatisticsTime, LDateTimeSpliteTemp.StopStatisticsTime, Aobject, EnumSliceType.WeekSlice); ///更新月的数据 LDateTimeSpliteTemp = new DateTimeSplite(); LDateTimeSpliteTemp = GetMonthStartAndStopTime(StartTime, IGlobalSetting); DoRealStatistics(LDateTimeSpliteTemp.StartStatisticsTime, LDateTimeSpliteTemp.StopStatisticsTime, Aobject, EnumSliceType.MonthSlice); ///更新年的数据 DoRealStatistics(new DateTime(StartTime.Year, 1, 1), new DateTime(StartTime.Year + 1, 1, 1), Aobject, EnumSliceType.YearSlice); StartTime = StartTime.AddDays(1); } }
/// <summary> /// 根据一个日期得到一个星期的开始时间和起始时间 /// </summary> /// <param name="ADatetime"></param> /// <returns></returns> public static DateTimeSplite GetWeekStartAndStopTime(DateTime ADatetime, GlobalSetting AGlodbalSetting) { DateTimeSplite LDateTimeSplite = new DateTimeSplite(); int LIntWeekStartSet = IntParse(AGlodbalSetting.StrWeekStart, 0);//0为星期天,1为星期1,6为星期6 int LIntWeek = 0; switch (ADatetime.DayOfWeek) { case DayOfWeek.Monday: LIntWeek = 1; break; case DayOfWeek.Tuesday: LIntWeek = 2; break; case DayOfWeek.Wednesday: LIntWeek = 3; break; case DayOfWeek.Thursday: LIntWeek = 4; break; case DayOfWeek.Friday: LIntWeek = 5; break; case DayOfWeek.Saturday: LIntWeek = 6; break; case DayOfWeek.Sunday: LIntWeek = 0; break; default: break; } if (LIntWeekStartSet <= LIntWeek) { LDateTimeSplite.StopStatisticsTime = ADatetime.AddDays(LIntWeekStartSet - LIntWeek).AddDays(7); LDateTimeSplite.StartStatisticsTime = LDateTimeSplite.StopStatisticsTime.AddDays(-7); } else if (LIntWeekStartSet > LIntWeek) { LDateTimeSplite.StopStatisticsTime = ADatetime.AddDays(LIntWeekStartSet - LIntWeek); LDateTimeSplite.StartStatisticsTime = LDateTimeSplite.StopStatisticsTime.AddDays(-7); } return(LDateTimeSplite); }
/// <summary> /// 根据一月得到一个月的开始时间和起始时间 /// </summary> /// <param name="ADatetime"></param> /// <param name="AGlodbalSetting"></param> /// <returns></returns> public static DateTimeSplite GetMonthStartAndStopTime(DateTime ADatetime, GlobalSetting AGlodbalSetting) { DateTimeSplite LDateTimeSplite = new DateTimeSplite(); int LIntMonthStartSet = IntParse(AGlodbalSetting.StrMonthStart, 0); //1为1号 2为2号 26为26号 DateTime LDateTimeTemp = new DateTime(ADatetime.Year, ADatetime.Month, LIntMonthStartSet); if (ADatetime < LDateTimeTemp) { LDateTimeSplite.StopStatisticsTime = LDateTimeTemp.AddMonths(1); LDateTimeSplite.StartStatisticsTime = LDateTimeTemp; } else { LDateTimeSplite.StartStatisticsTime = LDateTimeTemp; LDateTimeSplite.StopStatisticsTime = LDateTimeTemp.AddMonths(1); } return(LDateTimeSplite); }
/// <summary> /// 拆分开始时间和结束时间的查询时间的list /// </summary> /// <param name="AStartTime">本地开始时间</param> /// <param name="AStopTime">本地结束时间</param> /// <param name="AListDateTimeSplite">UTC的查询时间的list</param> private void GetSpliteTime(DateTime AStartTime, DateTime AStopTime, ref List <DateTimeSplite> AListDateTimeSplite) { DateTime LDateTimeStartUTC = AStartTime.ToUniversalTime(); DateTime LDateTimeStopUTC = AStopTime.ToUniversalTime(); DateTimeSplite LDateTimeSpliteTemp; if (new DateTime(LDateTimeStartUTC.Year, LDateTimeStartUTC.Month, 1) != new DateTime(LDateTimeStopUTC.Year, LDateTimeStopUTC.Month, 1)) { DateTime LDateTimeUTCTemp = new DateTime(LDateTimeStartUTC.Year, LDateTimeStartUTC.Month + 1, 1); while (LDateTimeUTCTemp <= LDateTimeStopUTC) { LDateTimeSpliteTemp = new DateTimeSplite(); LDateTimeSpliteTemp.StartStatisticsTime = LDateTimeStartUTC.ToLocalTime(); LDateTimeSpliteTemp.StopStatisticsTime = LDateTimeUTCTemp.ToLocalTime(); AListDateTimeSplite.Add(LDateTimeSpliteTemp); LDateTimeStartUTC = LDateTimeUTCTemp; LDateTimeUTCTemp = LDateTimeUTCTemp.AddMonths(1); ; } if (LDateTimeUTCTemp > LDateTimeStopUTC) { LDateTimeSpliteTemp = new DateTimeSplite(); LDateTimeSpliteTemp.StartStatisticsTime = LDateTimeStartUTC.ToLocalTime(); LDateTimeSpliteTemp.StopStatisticsTime = LDateTimeStopUTC.ToLocalTime(); AListDateTimeSplite.Add(LDateTimeSpliteTemp); } } else { LDateTimeSpliteTemp = new DateTimeSplite(); LDateTimeSpliteTemp.StartStatisticsTime = LDateTimeStartUTC.ToLocalTime(); LDateTimeSpliteTemp.StopStatisticsTime = LDateTimeStopUTC.ToLocalTime(); AListDateTimeSplite.Add(LDateTimeSpliteTemp); } }
/// <summary> /// 根据日期得到KPI计算要更新多长时间的数据 /// </summary> /// <param name="ADatetime"></param> /// <param name="AGlodbalSetting"></param> /// <param name="ASliceType">1、年,2、月 ,3、周,4、天 5、1小时 6、 30分钟 7 、15分钟 8、10分钟 9、 5分钟</param> /// <returns></returns> public static DateTimeSplite GetCycleStartAndStopTime(DateTime ADatetime, GlobalSetting AGlodbalSetting, int ASliceType) { DateTimeSplite LDateTimeSplite = new DateTimeSplite(); if (ASliceType < 1 || ASliceType > 10) { return(null); } switch (ASliceType) { case 1: { LDateTimeSplite.StartStatisticsTime = new DateTime(ADatetime.Year, 1, 1); LDateTimeSplite.StopStatisticsTime = LDateTimeSplite.StartStatisticsTime.AddYears(1); } break; case 2: { int LIntMonthStartSet = IntParse(AGlodbalSetting.StrMonthStart, 0); //1为1号 2为2号 26为26号 DateTime LDateTimeTemp = new DateTime(ADatetime.Year, ADatetime.Month, LIntMonthStartSet); if (ADatetime < LDateTimeTemp) { LDateTimeSplite.StartStatisticsTime = LDateTimeTemp.AddMonths(1); LDateTimeSplite.StopStatisticsTime = LDateTimeTemp; } else { LDateTimeSplite.StartStatisticsTime = LDateTimeTemp; LDateTimeSplite.StopStatisticsTime = LDateTimeTemp.AddMonths(1); } } break; case 3: { int LIntWeekStartSet = IntParse(AGlodbalSetting.StrWeekStart, 0); //0为星期天,1为星期1,6为星期6 int LIntWeek = 0; switch (ADatetime.DayOfWeek) { case DayOfWeek.Monday: LIntWeek = 1; break; case DayOfWeek.Tuesday: LIntWeek = 2; break; case DayOfWeek.Wednesday: LIntWeek = 3; break; case DayOfWeek.Thursday: LIntWeek = 4; break; case DayOfWeek.Friday: LIntWeek = 5; break; case DayOfWeek.Saturday: LIntWeek = 6; break; case DayOfWeek.Sunday: LIntWeek = 0; break; default: break; } if (LIntWeekStartSet < LIntWeek) { LDateTimeSplite.StopStatisticsTime = ADatetime.AddDays(LIntWeekStartSet - LIntWeek).AddDays(7); LDateTimeSplite.StartStatisticsTime = LDateTimeSplite.StopStatisticsTime.AddDays(-7); } else if (LIntWeekStartSet > LIntWeek) { LDateTimeSplite.StopStatisticsTime = ADatetime.AddDays(LIntWeekStartSet - LIntWeek); LDateTimeSplite.StartStatisticsTime = LDateTimeSplite.StopStatisticsTime.AddDays(-7); } else if (LIntWeekStartSet == LIntWeek) { LDateTimeSplite.StartStatisticsTime = ADatetime; LDateTimeSplite.StopStatisticsTime = ADatetime.AddDays(7); } } break; case 4: case 5: case 6: case 7: case 8: case 9: { LDateTimeSplite.StartStatisticsTime = ADatetime.Date; LDateTimeSplite.StopStatisticsTime = ADatetime.AddDays(1); } break; default: break; } return(LDateTimeSplite); }