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); }
public DateTimeRange Create(DateTimeRangeType periodType, DateTime?current = null) { return(Create(periodType, 0, current)); }