TDateTime
English · Suomi
TDateTime is stored as a double, the integer part representing days and the fractional part being fraction of a day. The integer part is the number of days that have passed since December 30, 1899, and can be a negative number. The fractional part reflects the fraction of a 24-hour day without regard to the sign of the TDateTime value, so care must be taken when computing negative TDateTime values with a fractional part.
Methods exist in Sysutils (datetimeroutines) that allow reading, writing and calculating with TDateTime, converting to and from a number of formats.
The following table displays examples of TDateTime values and their corresponding dates and times:
| Double Value | 'dd-mm-yyyy hh:nn:ss' |
|---|---|
| -1.75 | 29-12-1899 18:00:00 |
| -1.5 | 29-12-1899 12:00:00 |
| -1.25 | 29-12-1899 06:00:00 |
| 0 | 30-12-1899 00:00:00 |
| 1.25 | 31-12-1899 06:00:00 |
| 2.25 | 01-01-1900 06:00:00 |
| 25569 | 01-01-1970 00:00:00 (Unix Epoch) |
| 36152.5 | 23-12-1998 12:00:00 (FPC 1.0 Beta2) |
| 36526 | 01-01-2000 00:00:00 |
| 44927 | 01-01-2023 00:00:00 |
Get current time
Unit SysUtils function Now retrieves the current system date and time.
function Now : TDateTime;Adding and subtracting TDateTime
Unit DateUtils function DaysBetween tell number of whole days between two DateTime values.
function DaysBetween ( const ToDate, FromDate : TDateTime ) : Integer;Unit DateUtils function WeeksBetween tell number of whole weeks between two DateTime values.
function WeeksBetween( const ToDate, FromDate : TDateTime ):Integer;
program DateProject1;
uses
SysUtils,DateUtils;
const
DateFormatChars = 'dd"/"mm"/"yyyy';
var
DateTime1, DateTime2: TDateTime;
begin
DateTime1 := now;
DateTime2 := DateTime1 + 4*7; //28 days later
WriteLn('Current date is '+ FormatDateTime( DateFormatChars, DateTime1 ));
WriteLn('28 days later date is '+ FormatDateTime( DateFormatChars, DateTime2 ));
WriteLn('Number of days is '+ ( DaysBetween( DateTime1 ,DateTime2)).ToString );
WriteLn('Number of weeks is '+ ( WeeksBetween( DateTime1 ,DateTime2)).ToString );
ReadLn;
end.Set Date
Unit SysUtils function EncodeDate to set the date.
function EncodeDate ( const Year, Month, Day : Word ) : TDateTime;Compare two TDateTime
program CompareTwoDateTime;
uses
SysUtils, DateUtils;
var
firstDate, secondDate: TDateTime;
begin
firstDate := EncodeDate(2000, 2, 29);
secondDate := EncodeDate(2018, 8, 11);
if DaysBetween( firstDate, secondDate) = 0
then WriteLn('Both dates are same')
else
if firstDate < secondDate
then WriteLn('First date is earlier')
else WriteLn('First date is later');
ReadLn;
end.See also
- Date and time format ISO 8601
- RFC 1123 Time Format
- datetimeroutines in the sysUtils unit
From the Free Pascal wiki, page "TDateTime", as it stood on 2023-01-29 after a change by Mario13, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
