コード例 #1
0
ファイル: Common.cs プロジェクト: radtek/iPemSystem
        public static void CheckPeriods(DateTime start, DateTime end, EnmPDH period)
        {
            if (end < start)
            {
                throw new ArgumentException("结束时间必须大于开始时间");
            }

            if (period == EnmPDH.Hour && end.Subtract(start).TotalDays > 1)
            {
                throw new ArgumentException("按时统计最大支持1天");
            }

            if (period == EnmPDH.Day && end.Subtract(start).TotalDays > 31)
            {
                throw new ArgumentException("按日统计最大支持1个月");
            }

            if (period == EnmPDH.Week && end.Subtract(start).TotalDays > 186)
            {
                throw new ArgumentException("按周统计最大支持6个月");
            }

            if (period == EnmPDH.Month && end.Subtract(start).TotalDays > 366)
            {
                throw new ArgumentException("按月统计最大支持12个月");
            }

            if (period == EnmPDH.Year && end.Subtract(start).TotalDays > 732)
            {
                throw new ArgumentException("按月统计最大支持2年");
            }
        }
コード例 #2
0
ファイル: Common.cs プロジェクト: radtek/iPemSystem
        public static string GetPeriodDisplay(EnmPDH period)
        {
            switch (period)
            {
            case EnmPDH.Year:
                return("按年统计");

            case EnmPDH.Month:
                return("按月统计");

            case EnmPDH.Week:
                return("按周统计");

            case EnmPDH.Day:
                return("按日统计");

            case EnmPDH.Hour:
                return("按时统计");

            default:
                return("未定义");
            }
        }
コード例 #3
0
ファイル: CommonHelper.cs プロジェクト: radtek/iPemSystem
        /// <summary>
        /// 获得时间周期
        /// </summary>
        public static List <Period> GetPeriods(DateTime start, DateTime end, EnmPDH period)
        {
            var dates = new List <Period>();

            if (period == EnmPDH.Month)
            {
                while (start <= end)
                {
                    var date = new DateTime(start.Year, start.Month, 1).AddMonths(1).AddSeconds(-1);
                    if (date > end)
                    {
                        date = end;
                    }
                    dates.Add(new Period {
                        Name = MonthConverter(start), Start = start, End = date
                    });
                    start = date.AddSeconds(1);
                }
            }
            else if (period == EnmPDH.Week)
            {
                while (start <= end)
                {
                    var date = start.Date.AddSeconds((8 - (int)start.DayOfWeek) * 86400 - 1);
                    if (date > end)
                    {
                        date = end;
                    }
                    dates.Add(new Period {
                        Name = WeekConverter(start), Start = start, End = date
                    });
                    start = date.AddSeconds(1);
                }
            }
            else if (period == EnmPDH.Day)
            {
                while (start <= end)
                {
                    var date = start.Date.AddSeconds(86399);
                    if (date > end)
                    {
                        date = end;
                    }
                    dates.Add(new Period {
                        Name = DateConverter(start), Start = start, End = date
                    });
                    start = date.AddSeconds(1);
                }
            }
            else if (period == EnmPDH.Hour)
            {
                while (start <= end)
                {
                    var date = new DateTime(start.Year, start.Month, start.Day, start.Hour, 0, 0).AddSeconds(3599);
                    if (date > end)
                    {
                        date = end;
                    }
                    dates.Add(new Period {
                        Name = TimeConverter(start), Start = start, End = date
                    });
                    start = date.AddSeconds(1);
                }
            }

            return(dates);
        }