Solved

easy question on handling date/time

Posted on 2001-06-20
7
216 Views
Last Modified: 2010-04-04
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
Comment
Question by:martinpauly
7 Comments
 
LVL 9

Expert Comment

by:ITugay
ID: 6209723
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
 
LVL 8

Expert Comment

by:Cesario
ID: 6209747
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
 

Author Comment

by:martinpauly
ID: 6211051
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
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 4

Expert Comment

by:StevenB
ID: 6212555
 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
 
LVL 3

Accepted Solution

by:
f15iaf earned 50 total points
ID: 6212562
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
 
LVL 4

Expert Comment

by:DMN
ID: 6212573
Or:

Result := (Date2-Date1)*86400;

If you wish integer number of seconds:

Result := Round((Date2-Date1)*86400);
0
 

Author Comment

by:martinpauly
ID: 6214366
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

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
delphi prevent click fast 2 219
Help on project with Soap 10 54
delphi parse string to params 3 122
Delphi inherited method 6 70
Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question