Beispiel #1
0
        public DateTimeRange Create(DateTimeRangeType periodType, int periodsAgo, DateTime?current = null)
        {
            DateTime today = current?.Date ?? DateTime.Today;

            switch (periodType)
            {
            case DateTimeRangeType.Day:
                return(CreateDayPeriod(today.AddDays(-periodsAgo)));

            case DateTimeRangeType.Week:
                return(CreateWeekPeriod(today.AddDays(-7 * periodsAgo)));

            case DateTimeRangeType.Month:
                return(CreateMonthPeriod(today.AddMonths(-periodsAgo)));

            case DateTimeRangeType.Year:
                return(CreateYearPeriod(today.AddYears(-periodsAgo)));

            case DateTimeRangeType.AllTime:
                return(CreateAllTimePeriod());

            default:
                throw new ArgumentException(nameof(periodType));
            }
        }
        /// <summary>
        /// 获取时间范围
        /// </summary>
        /// <param name="type"></param>
        /// <param name="now"></param>
        /// <returns></returns>
        public static DateTime[] GetDateTimeRange(DateTimeRangeType type, DateTime?now = null)
        {
            var dates = new DateTime[2];

            switch (type)
            {
            case DateTimeRangeType.Today:
                dates[0] = GetToday(now);
                dates[1] = dates[0].AddDays(1);
                break;

            case DateTimeRangeType.Yesterday:
                dates[0] = GetYesterday(now);
                dates[1] = dates[0].AddDays(1);
                break;

            case DateTimeRangeType.ThisWeek:
                dates[0] = GetThisWeekFirstDay(now);
                dates[1] = dates[0].AddDays(7);
                break;

            case DateTimeRangeType.LastWeek:
                dates[0] = GetLastWeekFirstDay(now);
                dates[1] = dates[0].AddDays(7);
                break;

            case DateTimeRangeType.In7Days:
                dates[0] = Get6DaysAgo(now);
                dates[1] = dates[0].AddDays(7);
                break;

            case DateTimeRangeType.ThisMonth:
                dates[0] = GetThisMonthFirstDay(now);
                dates[1] = dates[0].AddMonths(1);
                break;

            case DateTimeRangeType.LastMonth:
                dates[0] = GetLastMonthFirstDay(now);
                dates[1] = dates[0].AddMonths(1);
                break;

            case DateTimeRangeType.In30Days:
                dates[0] = Get29DaysAgo(now);
                dates[1] = dates[0].AddDays(30);
                break;

            case DateTimeRangeType.ThisYear:
                dates[0] = GetThisYearFirstDay(now);
                dates[1] = dates[0].AddYears(1);
                break;

            case DateTimeRangeType.LastYear:
                dates[0] = GetLastYearFirstDay(now);
                dates[1] = dates[0].AddYears(1);
                break;
            }
            return(dates);
        }
Beispiel #3
0
 public DateTimeRange Create(DateTimeRangeType periodType, DateTime?current = null)
 {
     return(Create(periodType, 0, current));
 }