Reputation: 609
I need to find the difference between 2 dates in months and days in VB. Using DateDiff()
function, I am not getting the desired result since DateDiff()
subtracts the corresponding values only. For example:
DateDiff("m", '31/01/2012', '1/02/2012')
Returns 1 month, which is incorrect. How do I achieve this?
Upvotes: 0
Views: 8693
Reputation: 66
For Days Count Between Two Dates in VB6.0
Dim date1 As Date
Dim date2 As Date
date1 = CDate(Text1.Text)
date2 = CDate(Text2.Text)
Text3.Text = "Days between dates is: " & Format$(date2 - date1)
Upvotes: 0
Reputation: 609
I have solved this. I had to write a function that does what I need. The algorithm is :
1) Use DateDiff to calculate the difference in months between 2 days. 2) Store the 'dd' part of both the dates in 2 different variables. 3) If 'dd' of start date is greater than 'dd' of end date, month will be Step1.value-1, else, month will be step1.value 4) Increment the Start date by the value of months we get from step 3 5) Run a loop from 1 to 31 incrementing start date by 1 until it is equal to end date. 6) value of days will be (no. of iterations)
The code is :
Dim temp As Date
Dim temp1 As Integer
Dim i As Integer
Dim day1 As Integer
Dim day2 As Integer
temp1 = DateDiff("m", StartDate, EndDate)
day1 = DatePart("d", StartDate)
day2 = DatePart("d", EndDate)
If day1 > day2 Then
temp = DateAdd("m", (temp1 - 1), StartDate)
Month = (temp1 - 1)
Else
temp = DateAdd("m", (temp1), StartDate)
Month = (temp1)
End If
For i = 1 To 31
If temp = EndDate Then Exit For
temp = DateAdd("d", 1, temp)
Next i
Day = (i - 1)
Upvotes: 1