Gustav Brock
gustav at cactus.dk
Thu Jan 29 04:16:04 CST 2004
Hi Jeffrey
First, are you aware of the typo here:
> Month(myEndDate), 1)) - 1 Or Day(myendate) = 30 Then
Second, a performance as Excel's Days360() may not be the ultimate
goal as it not up to the standards. Visit this link to read more and
for data samples:
http://www.entisoft.com/ESTools/MathFinancial_Days360.HTML
/gustav
> I have the following function that is used to calculate the number of days
> based on a 360 day year. When I compare the results to Excel's Days360
> formula I get a different result.
> The start date I am using is 11/30/2003 and an end date of 12/31/2003
> My function returns 31 days and Excel returns 30 days.
> Can anyone see/tell me why I am getting a different result.
> TIA
> Jeff
> Function CalcDays360(mystartdate As Date, myEndDate As Date) As Double
> Dim mytotaldays
> mytotaldays = 0
> Select Case DateDiff("m", mystartdate, myEndDate)
> Case 0 'Both dates are in the same month
> If myEndDate <> DateAdd("m", 1, DateSerial(Year(myEndDate),
> Month(myEndDate), 1)) - 1 Then
> mytotaldays = DateDiff("d", mystartdate, myEndDate) + 1
> Else
> If Day(mystartdate) <> 31 Then
> mytotaldays = 30 - Day(mystartdate) + 1
> Else
> mytotaldays = 1
> End If
> End If
> Case Else 'Dates are not in the same month
> 'Determine Number of Days in the first month
> If Day(mystartdate) <> 31 Then
> mytotaldays = 30 - Day(mystartdate) + 1
> Else
> mytotaldays = 1
> End If
> 'Add Number of Days in the second month
> If myEndDate = DateAdd("m", 1, DateSerial(Year(myEndDate),
> Month(myEndDate), 1)) - 1 Or Day(myendate) = 30 Then
> mytotaldays = mytotaldays + 30
> Else
> mytotaldays = mytotaldays + Day(myEndDate)
> End If
> 'Add 30 days to total number for each whole months between dates
> mytotaldays = mytotaldays + (30 * (DateDiff("m", mystartdate,
> myEndDate) - 1))
> End Select
> CalcDays360 = mytotaldays
> End Function