Solved

C# DateDiff in Months

Posted on 2014-11-06
2
301 Views
Last Modified: 2014-11-12
I need to get the difference in months between two dates.

In SQL, this is what I need:
select DATEDIFF(MONTH, '11/1/2014', DATEADD(mm, DATEDIFF(mm, 0, '12/31/2014') + 1, 0)) 

Open in new window


The above date difference should be 2 months.
Difference between 12/10/2014 and 12/20/2014 = 1 month.
Difference between 11/1/2012 and 12/31/2014 = 26 months.

How do I do the same in C#?
0
Comment
Question by:pzozulka
2 Comments
 
LVL 14

Accepted Solution

by:
Tchuki earned 250 total points
ID: 40427398
The following should give what you are looking for:

namespace EE.Q_28552505.ConsoleApp
{
    using System;

    internal class Program
    {
        private static void Main(string[] args)
        {
            var dateTimeA = new DateTime(2013, 11, 1);
            var dateTimeB = DateTime.UtcNow;

            var difference = ((dateTimeB.Year - dateTimeA.Year) * 12) + dateTimeB.Month - dateTimeA.Month;

            Console.WriteLine(difference); // output is 12

            Console.ReadKey();
        }
    }
}

Open in new window

0
 
LVL 49

Assisted Solution

by:Gustav Brock
Gustav Brock earned 250 total points
ID: 40434947
Assuming there is some specifics behind the "custom" calculation, it is probably much more straight-forward to mimic it in VB.NET:
using System;
using Microsoft.VisualBasic;

namespace DateDiff
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTest test = new DateTest ();

            //DateTime date1 = new DateTime(2014,11,1);
            //DateTime date2 = new DateTime(2014,12,21);
            //DateTime date1 = new DateTime(2014, 12, 10);
            //DateTime date2 = new DateTime(2014, 12, 20);
            DateTime date1 = new DateTime(2012, 11, 1);
            DateTime date2 = new DateTime(2014, 12, 21);

            long diff = test.DDiff(date1, date2);
            Console.WriteLine(diff.ToString());
            Console.Read();
        }
    }

    public class DateTest
    {
      
        public long DDiff(DateTime Date1,DateTime Date2) 
        {
            DateTime dat0 = new DateTime(1899, 12, 30);
            return DateAndTime.DateDiff("M", Date1, DateAndTime.DateAdd("M", DateAndTime.DateDiff("M", dat0, Date2) + 1, dat0));
        }

    }

}

Open in new window

This returns the expected results.

/gustav
0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
This article explains how to reset the password of the sa account on a Microsoft SQL Server.  The steps in this article work in SQL 2005, 2008, 2008 R2, 2012, 2014 and 2016.
Viewers will learn how to use the SELECT statement in SQL to return specific rows and columns, with various degrees of sorting and limits in place.
Viewers will learn how to use the UPDATE and DELETE statements to change or remove existing data from their tables. Make a table: Update a specific column given a specific row using the UPDATE statement: Remove a set of values using the DELETE s…

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now