2008-11-06 133 views
2

我有一个应用程序,用户选择第一条语句和最后一条语句的日期。例如,第一条语句= 1/1/08,最后一条语句= 12/1/08,应该等于12条语句。计算月份

但是,使用下面的代码时,结果是11:

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

是否有另一种方法来计算这个,还是我必须用加1,结果被卡住?

回答

2

是的,你总是要增加一个,虽然您可以添加一个结束日期或减去开始日期一个也得到这种效果。考虑开始和结束日期相同的情况。他们的区别是0,但你仍然想要1个陈述来显示一个奇怪的情况。

5

添加1,正如你所写。 ;)

1/1/2008和12/1/2008之间的差异是11个月。没有改变。 ;)

2

那么,1月1日至12月1日之间的月数是11 ...您要查找的是月份+1的差异。所以只需添加一个:)

2

此外,您使用的DateDiff函数是一个VB6保留。更好地表达这样的:

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

你可以试试这个。希望这是非常有帮助的。

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. 
+0

http://stackoverflow.com/faq#promotion – spinningarrow 2012-12-06 04:03:37