我有一个应用程序,用户选择第一个语句和最后一个语句的日期。例如,第一个陈述= 1/1/08,最后一个陈述= 12/1/08,应该等于12个陈述。
但是,使用以下代码时,结果为11:
numPayments = DateDiff(DateInterval.Month, CDate(.FeeStartDate), CDate(.FeeEndDate))
有没有其他方法来计算这个,或者我必须坚持在结果中加1?
答案 0 :(得分:5)
在你写的时候加1。 ;)
2008年1月1日至2008年1月12日之间的差异为11个月。没有改变。 ;)
答案 1 :(得分:2)
嗯,1月1日到12月1日之间的月数是11 ...你要找的是+1个月的差异。所以只需添加一个:)
答案 2 :(得分:2)
此外,您正在使用的DateDiff函数是VB6保留。最好像这样表达:
numPayments = (Date.Parse(.FeeEndDate) - Date.Parse(.FeeStartDate)).TotalMonths + 1
答案 3 :(得分:2)
是的,你总是要添加一个,虽然你可以在结束日期添加一个或从开始日期减去一个也能得到这个效果。考虑开始日期和结束日期相同的情况。他们之间的区别是0,但你仍然需要一个陈述来表明只注意一个奇怪的情况。
答案 4 :(得分: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.