joek1975
joek1975

Reputation: 3583

Calculating Months

I have an application where the user selects the dates of a first statement and a last statement. Example, first statement = 1/1/08, last statement = 12/1/08, should equal 12 statements.

However, when using the following code, the result is 11:

numPayments = DateDiff(DateInterval.Month, CDate(.FeeStartDate), CDate(.FeeEndDate))

Is there another way to calculate this, or do I have to be stuck with adding 1 to the result?

Upvotes: 2

Views: 1581

Answers (5)

Joa.know
Joa.know

Reputation: 37

You could try this one. Hope this is very helpful.

Dim myDate As Date
Dim dateNow As Date
Dim nextMonth As Date

myDate = Now
dateNow = Format(myDate, "MM/dd/yyyy")
nextMonth = DateAdd(DateInterval.Month, 5, dateNow) 'compute the next 5 months from date now. Let say, #12/6/2012# the result will be #5/6/2013#


MessageBox.Show(DateDiff(DateInterval.Month, dateNow, nextMonth) & "months==> " & nextMonth)
'This will count the number of months interval. The result will be 5 months=>> #5/6/2013 because we count december to may.

Upvotes: 0

JB King
JB King

Reputation: 11910

Yes, you'd always have to add one though you may be able to add one to the end date or subtract one from the start date to also get this effect. Consider the case where the start and end dates are the same. Their difference is 0 but you'd still want 1 statement to show just to note one odd case.

Upvotes: 2

Joel Coehoorn
Joel Coehoorn

Reputation: 415735

Also, the DateDiff function you're using is a VB6 hold-over. Better to express it like this:

numPayments = (Date.Parse(.FeeEndDate) - Date.Parse(.FeeStartDate)).TotalMonths + 1

Upvotes: 2

dub
dub

Reputation: 1396

Well, the number of months between Jan 1st and Dec 1st is 11... what you're looking for is the difference of months +1. So just add one :)

Upvotes: 2

Jason
Jason

Reputation: 17089

Add 1, as you write. ;)

The difference between 1/1/2008 and 12/1/2008 is 11 months. No changing that. ;)

Upvotes: 5

Related Questions