示例#1
0
        private Quarter To(QuarterOfYear value,
                           int quarter)
        {
#if NET20
            if (!GenericExtensionMethods.In(value,
#else
            if (!value.In(
#endif
                                            QuarterOfYear.Q1,
                                            QuarterOfYear.Q2,
                                            QuarterOfYear.Q3,
                                            QuarterOfYear.Q4))
            {
                throw new ArgumentOutOfRangeException("value");
            }

            var date = new Quarter(_date);
            while (true)
            {
                date = date.AddQuarters(quarter);
                                        if (value == date.QuarterOfYear)
                {
                    return(date);
                }
            }
        }
示例#2
0
        public void op_Previous_QuarterOfYear(string expected,
                                              string quarter,
                                              QuarterOfYear value)
        {
            Quarter day    = quarter;
            var     actual = day.Previous(value);

            Assert.Equal((Quarter)expected, actual);
            Assert.Equal((Quarter)quarter, day);
        }
示例#3
0
        private static int ToMonth(QuarterOfYear value)
        {
            switch (value)
            {
            case QuarterOfYear.Q1:
                return(1);

            case QuarterOfYear.Q2:
                return(4);

            case QuarterOfYear.Q3:
                return(7);

            case QuarterOfYear.Q4:
                return(10);

            default:
                throw new ArgumentOutOfRangeException("value");
            }
        }
 public void values(int expected,
                    QuarterOfYear quarter)
 {
     Assert.Equal(expected, (int)quarter);
 }
示例#5
0
        public void op_Previous_QuarterOfYear(string expected,
                                              string quarter,
                                              QuarterOfYear value)
        {
            Quarter day = quarter;
            var actual = day.Previous(value);

            Assert.Equal((Quarter)expected, actual);
            Assert.Equal((Quarter)quarter, day);
        }
示例#6
0
 /// <summary>
 /// Counts Quarters in year
 /// </summary>
 /// <param name="quarter">quarter</param>
 /// <param name="fromStart">count from start of the year or from the end</param>
 /// <returns>number of Quarters</returns>
 public static int CountTotalQuarters(QuarterOfYear quarter, bool fromStart)
 {
     int result = 0;
     switch (quarter)
     {
         case QuarterOfYear.Q1: result = 1; break;
         case QuarterOfYear.Q2: result = 2; break;
         case QuarterOfYear.Q3: result = 3; break;
         case QuarterOfYear.Q4: result = 4; break;
     }
     if (!fromStart)
         result = 4 - result + 1;
     return result;
 }
示例#7
0
 /// <summary>
 /// Compare Quarters (works like String.Compare())
 /// </summary>
 /// <param name="first">first Quarter</param>
 /// <param name="second">second Quarter</param>
 /// <returns>int</returns>
 public static int CompareQuarters(QuarterOfYear first, QuarterOfYear second)
 {
     if ((int)first > (int)second)
         return 1;
     if ((int)first < (int)second)
         return -1;
     return 0;
 }
示例#8
0
 /// <summary>
 /// Check if passed quarter of passed year is available to display in currentDate.
 /// (Quarter can be displayed only if it already finished now. 
 /// Example: 2009 Q1 will be available for users only from 4/1/09
 /// </summary>
 /// <param name="year">year of quarter</param>
 /// <param name="quarter">quarter</param>
 /// <param name="currentDate">Current Date</param>
 /// <returns>is Quarter available</returns>
 public static bool IsQuarterAvailable(int year, QuarterOfYear quarter, DateTime currentDate)
 {
     int currentYear = currentDate.Year;
     QuarterOfYear currentQuarter = GetQuarter(currentDate.Month);
     if (year < currentYear)
         return true;
     if (year == currentYear && quarter < currentQuarter)
         return true;
     return false;
 }
示例#9
0
        /// <summary>
        /// Returns date representing quarter of year
        /// </summary>
        /// <param name="quarter">Quarter</param>
        /// <param name="year">Year</param>
        /// <param name="beginOfQuarter">begin / end of quarter</param>
        /// <returns></returns>
        static public DateTime QuarterToDate(QuarterOfYear quarter, int year, bool beginOfQuarter)
        {
            if (year < 0)
                throw new ArgumentOutOfRangeException("year", year, "Year cannot be negative");
            int day = 1;
            int month;
            switch(quarter)
            {
                case QuarterOfYear.Q1:
                    month = 1;
                    break;
                case QuarterOfYear.Q2:
                    month = 4;
                    break;
                case QuarterOfYear.Q3:
                    month = 7;
                    break;
                case QuarterOfYear.Q4:
                    month = 10;
                    break;
                default:
                    throw new ArgumentOutOfRangeException("quarter");
            }

            DateTime res = new DateTime(year, month, day);
            if (!beginOfQuarter)
                res = res.AddMonths(3).AddDays(-1);
            return res;
        }
示例#10
0
 public Quarter Previous(QuarterOfYear value)
 {
     return(To(value, -1));
 }
示例#11
0
 public Quarter Next(QuarterOfYear value)
 {
     return(To(value, 1));
 }
示例#12
0
 public Quarter(int year,
                QuarterOfYear quarter)
     : this(new DateTime(year, ToMonth(quarter), 1))
 {
 }
示例#13
0
 public void values(int expected,
                    QuarterOfYear quarter)
 {
     Assert.Equal(expected, (int)quarter);
 }