ASP DateDiff

I

inamori

I face that problems

07/01/2003 06/30/2006 ---------> it should be 3



01/01/2003 02/28/2005 --------->could i get 2 years and 2 months


01/01/2003 03/01/2005 --------->could i get 2 years and 2 months and 1
day
 
B

Bob Barrows [MVP]

inamori said:
I face that problems

07/01/2003 06/30/2006 ---------> it should be 3



01/01/2003 02/28/2005 --------->could i get 2 years and 2 months


01/01/2003 03/01/2005 --------->could i get 2 years and 2 months
and 1 day

Could you explain why these aren't the correct results?

The difference between 7/1/2003 and 6/30/2006 is:
3 years, 11 months, and 29 days
The difference between 1/1/2003 and 2/28/2005 is:
2 years, 1 months, and 27 days
The difference between 1/1/2003 and 3/1/2005 is:
2 years, 2 months, and 0 days

What is the logic used to determine when to add one day to the results?
Should the difference between 07/01/2003 and 07/01/2003 be 1 day? How about
07/01 and 07/02?

This is the code I used to get the above results:
<%
dim arDates(2,1), iYrs, iMths, iDays, i
arDates(0,0) = #2003-07-01#
arDates(0,1) = #2006-06-30#
arDates(1,0) = #2003-01-01#
arDates(1,1) = #2005-02-28#
arDates(2,0) = #2003-01-01#
arDates(2,1) = #2005-03-01#

for i = 0 to 2
Response.Write "The difference between " & arDates(i,0) & _
" and " & arDates(i,1) & " is: "
iYrs=DateDiff("yyyy",arDates(i,0),arDates(i,1))
Response.Write iYrs & " years, "
iMths=DateDiff("m",arDates(i,0),arDates(i,1))
if iMths < 12*iYrs then iYrs = iYrs - 1
if iMths - 12*iYrs < 0 then
Response.Write " 0 months, and "
else
Response.Write iMths - 12*iYrs & " months, and "
end if
iDays = DateDiff("d",arDates(i,0), _
DateAdd("m", -1*iMths, arDates(i,1)))
if iDays < 1 then iDays = 0
Response.Write iDays & " days"
Response.Write "<BR>"
next
%>

Bob Barrows
 
E

Evertjan.

Bob Barrows [MVP] wrote on 21 aug 2004 in
microsoft.public.inetserver.asp.general:
Could you explain why these aren't the correct results?

The difference between 7/1/2003 and 6/30/2006 is:
3 years, 11 months, and 29 days

Hi, Bob,

2000 years ago, people where used to including the first and last day in a
declaration of time passed.

It was like a 100 meter long barbed wire fence, with one pole per meter
consisting of 101 poles.

Likewise a duration of 7 weeks, 49 days in modern count, was called 50
days, pentecost [whitsun, 49 days after easter] being the Greek word
pentakosta for 50.

I suppose the OQ could be of ancient stock.
 
I

inamori

Thanks for yoiur programming

add one day because of business logic

Lease agreement

01/01/2003 12/31/2006 3 years

01/01/2003 01/01/2007 3 years + 1 day

That why i need add one day on the end date....
 
B

Bob Barrows [MVP]

Change the code to this:

<%
dim arDates(2,1), iYrs, iMths, iDays, i, dDate
arDates(0,0) = #2003-07-01#
arDates(0,1) = #2006-06-30#
arDates(1,0) = #2003-01-01#
arDates(1,1) = #2005-02-28#
arDates(2,0) = #2003-01-01#
arDates(2,1) = #2005-03-01#

for i = 0 to 2
dDate = DateAdd("d",1,arDates(i,1))
Response.Write "The difference between " & arDates(i,0) & _
" and " & dDate & " is: "
iYrs=DateDiff("yyyy",arDates(i,0),dDate)
Response.Write iYrs & " years, "
iMths=DateDiff("m",arDates(i,0),dDate)
if iMths < 12*iYrs then iYrs = iYrs - 1
if iMths - 12*iYrs < 0 then
Response.Write " 0 months, and "
else
Response.Write iMths - 12*iYrs & " months, and "
end if
iDays = DateDiff("d",arDates(i,0), _
DateAdd("m", -1*iMths, dDate))
if iDays < 1 then iDays = 0
Response.Write iDays & " days"
Response.Write "<BR>"
next
%>
 
B

Bob Barrows [MVP]

Yes. That is what I said in my revious response isn't it?
Just in case you missed it, here it is again:
****************************************************************
Change the code to this:

<%
dim arDates(2,1), iYrs, iMths, iDays, i, dDate
arDates(0,0) = #2003-07-01#
arDates(0,1) = #2006-06-30#
arDates(1,0) = #2003-01-01#
arDates(1,1) = #2005-02-28#
arDates(2,0) = #2003-01-01#
arDates(2,1) = #2005-03-01#

for i = 0 to 2
dDate = DateAdd("d",1,arDates(i,1))
Response.Write "The difference between " & arDates(i,0) & _
" and " & dDate & " is: "
iYrs=DateDiff("yyyy",arDates(i,0),dDate)
Response.Write iYrs & " years, "
iMths=DateDiff("m",arDates(i,0),dDate)
if iMths < 12*iYrs then iYrs = iYrs - 1
if iMths - 12*iYrs < 0 then
Response.Write " 0 months, and "
else
Response.Write iMths - 12*iYrs & " months, and "
end if
iDays = DateDiff("d",arDates(i,0), _
DateAdd("m", -1*iMths, dDate))
if iDays < 1 then iDays = 0
Response.Write iDays & " days"
Response.Write "<BR>"
next
%>

***********************************************************
 
I

Inamori Izumi

HI, I have tried your program

The output is something like that
The difference between 7/1/2003 and 7/1/2006 is: 3 years, 0 months, and 0
days
The difference between 1/1/2003 and 3/1/2005 is: 2 years, 2 months, and 0
days
The difference between 1/1/2003 and 3/2/2005 is: 2 years, 2 months, and 1
days

But actually what i want is

The difference between 7/1/2003 and 7/1/2006 is: 3 years, 0 months, and 1
days
The difference between 1/1/2003 and 3/1/2005 is: 2 years, 2 months, and 1
days
The difference between 1/1/2003 and 3/2/2005 is: 2 years, 2 months, and 2
days

can it be done? is it really logic error in computer mechanism
 
B

Bob Barrows [MVP]

I goofed. The code should be:


<%
dim arDates(2,1), iYrs, iMths, iDays, i, dDate
arDates(0,0) = #2003-07-01#
arDates(0,1) = #2006-06-30#
arDates(1,0) = #2003-01-01#
arDates(1,1) = #2005-02-28#
arDates(2,0) = #2003-01-01#
arDates(2,1) = #2005-03-01#

for i = 0 to 2
dDate = DateAdd("d",1,arDates(i,1))
Response.Write "The difference between " & arDates(i,0) & _
" and " & arDates(i,1) & " is: "
iYrs=DateDiff("yyyy",arDates(i,0),dDate)
Response.Write iYrs & " years, "
iMths=DateDiff("m",arDates(i,0),dDate)
if iMths < 12*iYrs then iYrs = iYrs - 1
if iMths - 12*iYrs < 0 then
Response.Write " 0 months, and "
else
Response.Write iMths - 12*iYrs & " months, and "
end if
iDays = DateDiff("d",arDates(i,0), _
DateAdd("m", -1*iMths, dDate))
if iDays < 1 then iDays = 0
Response.Write iDays & " days"
Response.Write "<BR>"
next
%>
 
I

inamori

thanks
let me test tomorrow when I work
Bob Barrows said:
I goofed. The code should be:


<%
dim arDates(2,1), iYrs, iMths, iDays, i, dDate
arDates(0,0) = #2003-07-01#
arDates(0,1) = #2006-06-30#
arDates(1,0) = #2003-01-01#
arDates(1,1) = #2005-02-28#
arDates(2,0) = #2003-01-01#
arDates(2,1) = #2005-03-01#

for i = 0 to 2
dDate = DateAdd("d",1,arDates(i,1))
Response.Write "The difference between " & arDates(i,0) & _
" and " & arDates(i,1) & " is: "
iYrs=DateDiff("yyyy",arDates(i,0),dDate)
Response.Write iYrs & " years, "
iMths=DateDiff("m",arDates(i,0),dDate)
if iMths < 12*iYrs then iYrs = iYrs - 1
if iMths - 12*iYrs < 0 then
Response.Write " 0 months, and "
else
Response.Write iMths - 12*iYrs & " months, and "
end if
iDays = DateDiff("d",arDates(i,0), _
DateAdd("m", -1*iMths, dDate))
if iDays < 1 then iDays = 0
Response.Write iDays & " days"
Response.Write "<BR>"
next
%>





--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"
 

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
474,431
Messages
2,571,678
Members
48,796
Latest member
Greg L.

Latest Threads

Top