How does Delphi calculate TDateTime as a Float value?
Solution 1
The float represents the number of days since 30.12.1899. So float value = 1 would be 31.12.1899, 2 = 01.01.1900 and so on. The time is saved as a fraction of the day. 0.25 = 06:00, 0.5 = 12:00, 0.75 = 18.00 ...
So the 31.12.1899 12:00 would be equal to 1.5.
This makes TDateTime really easy to work with. To get the difference in days just substract two DateTimes.
02.01.2015 - 01.01.2015 = 1
Simple as it can be. To get the difference in hours just multiply by 24.
Also have a look at the functions in Unit DateUtils. They come in handy at times.
Solution 2
You are looking for
function DateTimeToUnix(const AValue: TDateTime): Int64;
and
function UnixToDateTime(const AValue: Int64): TDateTime;
functions from DateUtils.pas
TDateTime
value can be formatted by FormatDateTime
function
//uses sysutils
var
k:double;
t:tdatetime
begin
t:=UnixToDateTime(1483909200);
showmessage(datetostr(t));
t:=strtodate('08.01.2017');
k:=DateTimeToUnix(t);
showmessage(k.ToString);
end;
Related videos on Youtube
Comments
-
A B over 1 year
I am new in
Delphi
programming. While going through theData Types
inDelphi
I foundTDateTime
.While using it in my test application I come to know that the
TDateTime
Object provide me aFloat\Double
value.I am little curious about
TDateTime
How it calculate theDate Time
toDouble
value.Below is the example code which I had used:
var LDateTime: TDateTime; LFloat: Double; begin LDateTime := now;// current DateTime LFloat:= LDateTime; // provide me a float value end;
Is it using any formula to calculate
Date and Time Value
from Windows?Can anyone suggest/provide me for some more information about working of
TDateTime
?Thanks in advance.
-
RRUZ about 9 yearsAre you tried reading the documentation?
-
-
Stijn Sanders about 9 yearsAlso, the formula itself can be found under
EncodeDate
in unit SysUtils -
LU RD about 9 yearsNote that using TDateTime as a Double is an implementation detail and should be avoided. There are lots of routines that handles TDateTime values is SysUtils and DateUtils. See Date and Time Support.