Difference in months between two dates

前端 未结 30 1242
天命终不由人
天命终不由人 2020-11-22 11:02

How to calculate the difference in months between two dates in C#?

Is there is equivalent of VB\'s DateDiff() method in C#. I need to find difference in

30条回答
  •  太阳男子
    2020-11-22 12:02

    My understanding of the total months difference between 2 dates has an integral and a fractional part (the date matters).

    The integral part is the full months difference.

    The fractional part, for me, is the difference of the % of the day (to the full days of month) between the starting and ending months.

    public static class DateTimeExtensions
    {
        public static double TotalMonthsDifference(this DateTime from, DateTime to)
        {
            //Compute full months difference between dates
            var fullMonthsDiff = (to.Year - from.Year)*12 + to.Month - from.Month;
    
            //Compute difference between the % of day to full days of each month
            var fractionMonthsDiff = ((double)(to.Day-1) / (DateTime.DaysInMonth(to.Year, to.Month)-1)) -
                ((double)(from.Day-1)/ (DateTime.DaysInMonth(from.Year, from.Month)-1));
    
            return fullMonthsDiff + fractionMonthsDiff;
        }
    }
    

    With this extension, those are the results:

    2/29/2000 TotalMonthsDifference 2/28/2001 => 12
    2/28/2000 TotalMonthsDifference 2/28/2001 => 12.035714285714286
    01/01/2000 TotalMonthsDifference 01/16/2000 => 0.5
    01/31/2000 TotalMonthsDifference 01/01/2000 => -1.0
    01/31/2000 TotalMonthsDifference 02/29/2000 => 1.0
    01/31/2000 TotalMonthsDifference 02/28/2000 => 0.9642857142857143
    01/31/2001 TotalMonthsDifference 02/28/2001 => 1.0
    

提交回复
热议问题