예제 #1
0
        public void DateRange()
        {
            DateRangeStruct dates = pastDate.DateRange(DateRangeOptions.Week);

            Assert.AreEqual("31-DEC-2017", dates.startDate.DateFormat(DateFormats.European));
            Assert.AreEqual("06-JAN-2018", dates.endDate.DateFormat(DateFormats.European));
        }
예제 #2
0
        /// <summary><![CDATA[
        /// Returns a struct with a start and end date for a given start date and interval.
        /// ]]></summary>
        /// <example>
        /// If you pass the current date, and wish to know the first
        /// and last days of the week based on the current day:
        /// <code><![CDATA[
        /// DateRangeStruct result = DateTime.Now.DateRange(TemporalHelpers.DateRangeOptions.Week);
        /// Response.Write ("The first day of the week is " + result.startDate.ToString() +
        /// ", and the last day of the week is " + result.endDate.ToString());
        /// ]]></code>
        /// </example>
        /// <param name="relativeDate">Date to use as the basis for calculating the start and end date of the range.</param>
        /// <param name="dateRangeOptions">Enumeration value specifying which abstracted date range to evaluate. Note, weeks begin on Sunday and end on Saturday.</param>
        /// <returns>DateTimeStruct with the start and end date of the range.</returns>
        public static DateRangeStruct DateRange(this DateTime relativeDate, DateRangeOptions dateRangeOptions)
        {
            DateTime[] dates  = { DateTime.Today, DateTime.Today };
            DateTime   myDate = relativeDate;

            switch (dateRangeOptions)
            {
            case DateRangeOptions.Week:

                if (myDate.DayOfWeek > 0)
                {
                    myDate = myDate.AddDays(-1 * Convert.ToInt32(myDate.DayOfWeek));
                }

                dates[0] = myDate;
                dates[1] = myDate.AddDays(6);

                break;

            case DateRangeOptions.Month:

                if (myDate.Day > 1)
                {
                    myDate = myDate.AddDays(-1 * (myDate.Day - 1));
                }

                dates[0] = myDate;
                dates[1] = myDate.AddMonths(1);
                dates[1] = dates[1].AddDays(-1);

                break;

            case DateRangeOptions.Quarter:

                if (myDate.Month < 4)
                {
                    dates[0] = Convert.ToDateTime("1/1/" + myDate.Year.ToString());
                }
                if (myDate.Month > 3 && myDate.Month < 7)
                {
                    dates[0] = Convert.ToDateTime("4/1/" + myDate.Year.ToString());
                }
                if (myDate.Month > 6 && myDate.Month < 10)
                {
                    dates[0] = Convert.ToDateTime("7/1/" + myDate.Year.ToString());
                }
                if (myDate.Month > 9)
                {
                    dates[0] = Convert.ToDateTime("10/1/" + myDate.Year.ToString());
                }

                dates[1] = dates[0].AddMonths(3);
                dates[1] = dates[1].AddDays(-1);

                break;

            case DateRangeOptions.Year:

                dates[0] = Convert.ToDateTime("1/1/" + myDate.Year.ToString());
                dates[1] = Convert.ToDateTime("12/31/" + myDate.Year.ToString());

                break;
            }

            DateRangeStruct result = new DateRangeStruct();

            result.startDate = dates[0];
            result.endDate   = dates[1];

            return(result);
        }