find months between two dates c# code example

Example 1: compute months c#

public static int GetMonthDifference(DateTime startDate, DateTime endDate)
{
    int monthsApart = 12 * (startDate.Year - endDate.Year) + startDate.Month - endDate.Month;
    return Math.Abs(monthsApart);
}

Example 2: How to get number of months between 2 dates c#

class Program
    {
        static void Main(string[] args)
        {
            //First Date
            DateTime firstDate = new DateTime(2017, 03, 03);
 
            //Second Date
            DateTime secondDate =new  DateTime(2018, 06, 06); //DateTime.Now;
 
 
           int months= MonthDiff(firstDate, secondDate);
 
            Console.WriteLine("First Date  :"+firstDate);
            Console.WriteLine("Second Date :" + secondDate);
            Console.WriteLine("Months      :"+months);
            Console.ReadLine();
        }
 
        public static int MonthDiff(DateTime d1, DateTime d2)
        {
            int m1;
            int m2;
            if(d1<d2)
            {
                m1 = (d2.Month - d1.Month);//for years
                m2 = (d2.Year - d1.Year) * 12; //for months
            }
            else
            {
                m1 = (d1.Month - d2.Month);//for years
                m2 = (d1.Year - d2.Year) * 12; //for months
            }
            
            return  m1 + m2;
        }
    }

Example 3: get list of months and year between two dates c#

public static IEnumerable<(string Month, int Year)> MonthsBetween(
        DateTime startDate,
        DateTime endDate)
{
    DateTime iterator;
    DateTime limit;

    if (endDate > startDate)
    {
        iterator = new DateTime(startDate.Year, startDate.Month, 1);
        limit = endDate;
    }
    else
    {
        iterator = new DateTime(endDate.Year, endDate.Month, 1);
        limit = startDate;
    }

    var dateTimeFormat = CultureInfo.CurrentCulture.DateTimeFormat;
    while (iterator <= limit)
    {
        yield return (
            dateTimeFormat.GetMonthName(iterator.Month), 
            iterator.Year
        );

       iterator = iterator.AddMonths(1);
    }
}