• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 232
  • Last Modified:

easy question on handling date/time

hi!

is there any procedure/function in delphi which returns the seconds after a specific time? (e.g. how many seconds are between 01.01.1990, 12:00:00 and today?)

I need to compare to dates/time to get the result how many seconds are between two times/dates.

For example i want to know how long it is in seconds between 01.01.01 12:00:00 and 01.01.2001 12:01:38. the problem is how to handle the midnight when the date changes.

thx for your answers

martin
0
martinpauly
Asked:
martinpauly
1 Solution
 
ITugayCommented:
Hi martinpauly,

use TDateTime. It  is just floating number. Ceil part - days, frac part is part of day.
0.5 - is 12 hours
0.25 - 6 hours
so you can substract two dates and it's time
  D := D2 - D1;
and then convert it into seconds
  SEC := Round(D*24*60*60);

----
Igor.
0
 
CesarioCommented:
Hello,

ITugay is right ;-)

you can use this function:

Function SecBetween(Date1,Date2:tDateTime):Integer;
begin
  Result := trunc(date1-date2)*24*3600
end;

Best Regards

Cesario
0
 
martinpaulyAuthor Commented:
hi,

the solution you wrote doesn't work. The Result of
date1 - date2 is always 0. So the multiplication with 24 and 3600 doesn't work. to set date1 and date2 i use:

date1:=strtodatetime('01.02.01 23:59:00');
date2:=strtodatetime('01.03.01 00:01:00');
(german date and time settings)

any ideas what i can do?

greetings martin
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
StevenBCommented:
 Are you sure that you've declared date1 and date2 as TDateTime, not TDate? The function supplied by Cesario should work in this case.
0
 
f15iafCommented:
sect is the number of seconds beetwen 2 dates

var
        date1,date2:Tdatetime;
        tm,tm1:Ttimestamp;
        sect:cardinal;
begin
        date1:=strtodatetime('01.02.01 23:59:00');
        date2:=strtodatetime('01.03.01 00:01:00');
        tm:=datetimetotimestamp(date1);
        tm1:=datetimetotimestamp(date2);
        sect:=(tm1.Date-tm.Date)*86400+(tm1.time-tm.Time) div 1000;
end;
0
 
DMNCommented:
Or:

Result := (Date2-Date1)*86400;

If you wish integer number of seconds:

Result := Round((Date2-Date1)*86400);
0
 
martinpaulyAuthor Commented:
to stevenB: yes i'm sure i use tdatetime to declare

to  DMN: your solution doesn't work! same problem i wrote above.

to f15iaf : your right! thx a lo
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now