If you want to compare two dates, you must find out that the first day of the quarter corresponds to each of these dates, then you can compare these two dates:
using System; namespace DataTime { class Program { static int GetQuarter (DateTime dt) { int Month = dt.Month; // from 1 to 12 return Month / 3 + 1; } static DateTime GetQuarterFirstDay (DateTime dt) { int monthsOfTheFirstDayOfQuarter = (GetQuarter (dt) - 1) * 3 + 1; return new DateTime(dt.Year, monthsOfTheFirstDayOfQuarter, 1); // it can be changed to // return new DateTime(dt.Year, (dt.Month/3)*3 + 1, 1); } static void Main (string[] args) { DateTime dt1 = new DateTime (2009, 6, 9), dt2 = new DateTime (2009, 7, 9), dt3 = new DateTime (2009, 8, 9), dt4 = new DateTime (2009, 8, 9); Console.WriteLine ("dt1={0}", dt1.AddMonths (1)); Console.WriteLine ("dt2={0}", dt2.AddMonths (1)); Console.WriteLine ("dt3={0}", dt3.AddMonths (1)); DateTime startDate = DateTime.Now, endDate1 = startDate.AddMonths(24).AddDays(1), endDate2 = startDate.AddMonths(24).AddDays(-1), endDate3 = startDate.AddMonths(28); Console.WriteLine ("Now we have={0}", startDate); Console.WriteLine ("endDate1={0}", endDate1); Console.WriteLine ("endDate2={0}", endDate2); Console.WriteLine ("endDate3={0}", endDate3); Console.WriteLine ("GetQuarterFirstDay(startDate)={0}", GetQuarterFirstDay (startDate)); Console.WriteLine ("GetQuarterFirstDay(endDate1)={0}", GetQuarterFirstDay (endDate1)); Console.WriteLine ("GetQuarterFirstDay(endDate2)={0}", GetQuarterFirstDay (endDate2)); Console.WriteLine ("GetQuarterFirstDay(endDate3)={0}", GetQuarterFirstDay (endDate3)); if (DateTime.Compare (GetQuarterFirstDay (endDate2), GetQuarterFirstDay (startDate).AddMonths (24)) > 0) Console.WriteLine ("> 2 Yeas"); else Console.WriteLine ("<= 2 Yeas"); if (DateTime.Compare (GetQuarterFirstDay (endDate3), GetQuarterFirstDay (startDate).AddMonths (24)) > 0) Console.WriteLine ("> 2 Yeas"); else Console.WriteLine ("<= 2 Yeas"); } } }
manufacture
dt1=09.07.2009 00:00:00 dt2=09.08.2009 00:00:00 dt3=09.09.2009 00:00:00 Now we have=22.04.2010 11:21:45 endDate1=23.04.2012 11:21:45 endDate2=21.04.2012 11:21:45 endDate3=22.08.2012 11:21:45 GetQuarterFirstDay(startDate)=01.04.2010 00:00:00 GetQuarterFirstDay(endDate1)=01.04.2012 00:00:00 GetQuarterFirstDay(endDate2)=01.04.2012 00:00:00 GetQuarterFirstDay(endDate3)=01.07.2012 00:00:00 <= 2 Yeas > 2 Yeas
EDITED . I fixed the error from the first version. Now it should work correctly.
Oleg
source share