示例#1
0
        //按时间分开
        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);
            }
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
            }
        }
示例#5
0
        /// <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);
        }