Datediff good question

D

Drago

Hi, I got the next question, I want to know the diference between two
dates
and thats is really easy, but my problem is get that diference in the
following format

ex. "the diference is= 0 year, 9 months, 11 days"

var1 = 04/04/1999
var2 = 01/11/2000
Response.Write("var1 to var2 is " & DateDiff("d", var1, var2) & " days
<br>")
Response.Write("var1 to var2 is " & DateDiff("m", var1, var2) & "
months <br>")
Response.Write("var1 to var2 is " & DateDiff("yyyy", var1, var2) & "
year(s) <br>")

Results:
var1 = 04/04/1999
var2 = 01/11/2000
var1 to var2 is 282 days
var1 to var2 is 9 months
var1 to var2 is 1 year(s)

I want to be like this: "the diference is= 0 year, 9 months, 11 days"

I will be very pleased if somebody can helpme to make a Fuction to do
this.
 
D

dlbjr

Set DT = New DateTool
Response.Write DT.GetDateSpan("4/1/01","6/2/04")
Set DT = Nothing

Class DateTool
Private dtmStartDate
Private dtmEndDate

Private Sub Class_Initialize()

End Sub

Private Sub Class_Terminate()

End Sub

Public Function GetDateSpan(dtm1,dtm2)
dtmStartDate = dtm1
dtmEndDate = dtm2
intYears = DateDiff("yyyy",dtmStartDate,dtmEndDate)
GetDateSpan = intYears & " Year" & GetPlural(intYears)
If intYears > 0 Then
dtmStartDate = DateAdd("yyyy",intYears,dtmStartDate)
End If
intMonths = DateDiff("m",dtmStartDate,dtmEndDate)
GetDateSpan = GetDateSpan & " " & intMonths & " Month" & GetPlural(intMonths)
If intMonths > 0 Then
dtmStartDate = DateAdd("m",intMonths,dtmStartDate)
End If
intDays = DateDiff("d",dtmStartDate,dtmEndDate)
GetDateSpan = GetDateSpan & " " & intDays & " Day" & GetPlural(intDays)
End Function

Private Function GetPlural(intnum1)
If IsNumeric(intnum1) Then
If intnum1 > 1 Then
GetPlural = "s"
End If
End If
End Function
End Class

'from dlbjr

'Unambit from meager knowledge of inane others,engender uncharted sagacity.
 
D

Drago

Hello again, I though it was working good, but I found one problem:
everythings works all raight but when you use something like this

DT.GetDateSpan("4/6/2004","6/4/2004")

I get a negative day, in that case -2

Ex.
Set DT = New DateTool
Response.Write DT.GetDateSpan("4/6/2004","6/4/2004") & "<BR>"
Set DT = Nothing

output:
0 Year 2 Months -2 Day

Do you have any idea why?

Thanks :)
 
J

James Baker

Seems right to me...

It appears to be calculating them individually as opposed to collectively.
You're probably going to need to do some math on this one.


Drago said:
Hello again, I though it was working good, but I found one problem:
everythings works all raight but when you use something like this

DT.GetDateSpan("4/6/2004","6/4/2004")

I get a negative day, in that case -2

Ex.
Set DT = New DateTool
Response.Write DT.GetDateSpan("4/6/2004","6/4/2004") & "<BR>"
Set DT = Nothing

output:
0 Year 2 Months -2 Day

Do you have any idea why?

Thanks :)



"dlbjr" <[email protected]> wrote in message
sagacity.
 
D

dlbjr

'Fixed

Class DateTool
Private dtmStartDate
Private dtmEndDate

Private Sub Class_Initialize()

End Sub

Private Sub Class_Terminate()

End Sub

Public Function GetDateSpan(dtm1,dtm2)
dtmStartDate = dtm1
dtmEndDate = dtm2
intYears = DateDiff("yyyy",dtmStartDate,dtmEndDate)
If Month(dtmStartDate) > Month(dtmEndDate) And intYears > 0 Then
intYears = intYears - 1
End If
GetDateSpan = intYears & " Year" & GetPlural(intYears)
If intYears > 0 Then
dtmStartDate = DateAdd("yyyy",intYears,dtmStartDate)
End If
intMonths = DateDiff("m",dtmStartDate,dtmEndDate)
If Day(dtmStartDate) > Day(dtmEndDate) And intMonths > 0 Then
intMonths = intMonths - 1
End If
GetDateSpan = GetDateSpan & " " & intMonths & " Month" & GetPlural(intMonths)
If intMonths > 0 Then
dtmStartDate = DateAdd("m",intMonths,dtmStartDate)
End If
intDays = DateDiff("d",dtmStartDate,dtmEndDate)
GetDateSpan = GetDateSpan & " " & intDays & " Day" & GetPlural(intDays)
End Function

Private Function GetPlural(intnum1)
If IsNumeric(intnum1) Then
If intnum1 > 1 Then
GetPlural = "s"
End If
End If
End Function
End Class

'from dlbjr

'Unambit from meager knowledge of inane others,engender uncharted sagacity.
 
D

dlbjr

Change line 38 to:

If intnum1 <> 1 Then

This will make the text read properly.

'from dlbjr

'Unambit from meager knowledge of inane others,engender uncharted sagacity.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,899
Latest member
RodneyMcAu

Latest Threads

Top