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); } } }
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); }
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); }
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); }
/// <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; }
/// <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; }
/// <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; }
/// <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; }
public Quarter Previous(QuarterOfYear value) { return(To(value, -1)); }
public Quarter Next(QuarterOfYear value) { return(To(value, 1)); }
public Quarter(int year, QuarterOfYear quarter) : this(new DateTime(year, ToMonth(quarter), 1)) { }
public void values(int expected, QuarterOfYear quarter) { Assert.Equal(expected, (int)quarter); }