wildzero
asked on
Different between dates/time
Hi there,
I got two dates formatted like this
2006-09-07T16:02:20.000Z
and
2006-09-10T21:36:56.510Z
What I need to be able to do is figure out the time difference between those two, ie - 5 mins or 1 hour, 1 day etc.
Any ideas on where to start?
I got two dates formatted like this
2006-09-07T16:02:20.000Z
and
2006-09-10T21:36:56.510Z
What I need to be able to do is figure out the time difference between those two, ie - 5 mins or 1 hour, 1 day etc.
Any ideas on where to start?
ASKER
Looks good, just testing now
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Great :-)
Just 1 question now...
Based on the above,
s1 = old time in GMT
s2 = time now in GMT
how can I make it so I can get
a1 = Current time local zone - TimeDifference of (s2 - s1) (as above) so would be just taking off the seconds from your above calculation?
I think it would be like, do your above and get
secDif:=SecondsBetween(dt1 ,dt2);
then do
OldLocalTime := DecSec(Date(now), secDif);
So, Decrease the seconds of the Datenow by the secDif from above? That make sense....
I have upped the points...
Just 1 question now...
Based on the above,
s1 = old time in GMT
s2 = time now in GMT
how can I make it so I can get
a1 = Current time local zone - TimeDifference of (s2 - s1) (as above) so would be just taking off the seconds from your above calculation?
I think it would be like, do your above and get
secDif:=SecondsBetween(dt1
then do
OldLocalTime := DecSec(Date(now), secDif);
So, Decrease the seconds of the Datenow by the secDif from above? That make sense....
I have upped the points...
Not sure if I understand you correctly...
so let's say we have
OldGMT, NowGMT:TDateTime;
and
OldLocal, NowLocal:TDateTime;
you know the values of OldGMT an NowGMT (and of course NowLocal) and you want to find out OldLocal?
OldLocal:= IncSecond(Now(),secDif*(-1 )); //for going backwards in time, you can use IncSecond with a negative value
ShowMessage(DateTimeToStr( OldLocal)) ;
But keep in mind that SecondsBetween only returns full seconds, if you want to work with milliseconds difference, either use MilliSecondsBetween,
or (for large time spans) SecondSpan. Secondspan will return seconds with second fractions (as a Double).
so let's say we have
OldGMT, NowGMT:TDateTime;
and
OldLocal, NowLocal:TDateTime;
you know the values of OldGMT an NowGMT (and of course NowLocal) and you want to find out OldLocal?
OldLocal:= IncSecond(Now(),secDif*(-1
ShowMessage(DateTimeToStr(
But keep in mind that SecondsBetween only returns full seconds, if you want to work with milliseconds difference, either use MilliSecondsBetween,
or (for large time spans) SecondSpan. Secondspan will return seconds with second fractions (as a Double).
ASKER
Ah thats sound like it :-)
:D Thanks a lot!
:D Thanks a lot!
You're welcome - for UTC to local, local to UTC time conversions (and other useful stuff), see:
http://www.thedelphimagazine.com/samples/1175/article.htm
http://17slon.com/gp/gp/gptimezone.htm
and the Jedi project's JclDateTime.pas
http://www.thedelphimagazine.com/samples/1175/article.htm
http://17slon.com/gp/gp/gptimezone.htm
and the Jedi project's JclDateTime.pas
ASKER
Hmmm when I do
OldLocal:= IncSecond(Now(),secDif*(-1 ));
I just get the date (like 8/09/2006) with no time....
OldLocal:= IncSecond(Now(),secDif*(-1
I just get the date (like 8/09/2006) with no time....
ASKER
ops
I was doing DateToStr NOT DateTimeToStr
:P
sorry
I was doing DateToStr NOT DateTimeToStr
:P
sorry
uses {...}DateUtils;
{...}
procedure TForm1.Button1Click(Sender
function ReadTime(str:String):TDate
var y,m,d,h,min,s,ms:Integer;
begin
y:=StrToInt(Copy(str,1,4))
m:=StrToInt(Copy(str,6,2))
d:=StrToInt(Copy(str,9,2))
h:=StrToInt(Copy(str,12,2)
min:=StrToInt(Copy(str,15,
s:=StrToInt(Copy(str,18,2)
ms:=StrToInt(Copy(str,21,2
result:=EncodeDateTime(y, m, d, h, min, s, ms);
end;
var
s1,s2:String;
dt1,dt2:TDateTime;
begin
s1:='2006-09-07T16:02:20.0
s2:='2006-09-10T21:36:56.5
dt1:=ReadTime(s1);
dt2:=ReadTime(s2);
ShowMessage(IntToStr(Secon
end;