Wednesday, September 17, 2008

Date Difference

One very essential function for developers to find date, month & year difference between two dates.

the parameters here are respectively end date & start date..


public static string FindDateDiffFrmEndtoStart(DateTime dtEndDate, DateTime dtStartDate)
{
string result;
int[] arr = { 31, 28, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int Year, Day, Month, StartYear, EndYear, StartDay, EndDay, StartMonth, EndMonth;

StartYear = dtStartDate.Year;
EndYear = dtEndDate.Year;
StartMonth = dtStartDate.Month;
EndMonth = dtEndDate.Month;
string[] Startday = dtStartDate.ToShortDateString().Split('/');
string[] Endnday = dtEndDate.ToShortDateString().Split('/');
StartDay = (int)Convert.ToInt16(Startday[1]);
EndDay = (int)Convert.ToInt16(Endnday[1]);

if (EndDay < StartDay)
{
if (EndMonth == 1)
EndDay += arr[EndMonth - 1];
else if (EndMonth == 2)
{
if (DateTime.IsLeapYear(EndYear))
EndDay += arr[EndMonth];
else
EndDay += arr[EndMonth - 1];
}
else
EndDay += arr[EndMonth];

EndMonth--;
}

if (EndMonth < StartMonth)
{
EndMonth += 12;
EndYear--;
}

Year = EndYear - StartYear;
Month = EndMonth - StartMonth;
Day = EndDay - StartDay;

result = (Year > 0 ? Year.ToString() + " Year(s) " : string.Empty) + (Month > 0 ? Month.ToString() + " Month(s) " : string.Empty) + (Day > 0 ? Day.ToString() + " Day(s)" : string.Empty);

return result;
}

1 comment:

  1. very useful post Arif..thanks a lot. i have been digging around for such and now i m happy to get what i have wanted..

    best of luck


    Rony.

    ReplyDelete