Date & Time

TDateTime type and timing methods.


TDateTime.Create

function TDateTime.Create(AYear, AMonth, ADay, AHour, AMinute, ASecond, AMillisecond: Integer): TDateTime; static;

TDateTime.Create

function TDateTime.Create(AYear, AMonth, ADay: Integer): TDateTime; static;

Creates just the date part.


TDateTime.Create

function TDateTime.Create(AHour, AMin, ASecond, AMillisecond: Integer): TDateTime; static;

Creates just the time part.


TDateTime.CreateFromUnix

function TDateTime.CreateFromUnix(UnixTime: Int64): TDateTime; static;

TDateTime.CreateFromISO

function TDateTime.CreateFromISO(Value: String): TDateTime; static;

Create from ISO 8601 string YYYYMMDDThhmmss and YYYY-MM-DD hh:mm:ss format

Examples:

  • 2022-08-30T13:45:38+0000

  • 2022-08-30T13:45:38

  • 20220830 134538


TDateTime.ToUnix

function TDateTime.ToUnix(IsUTC: Boolean = True): Int64;

Convert to unix time. IsUTC determines if Self is already UTC otherwise it will need to be converted.


TDateTime.ToISO

function TDateTime.ToISO(IsUTC: Boolean = True): String;

Convert to ISO 8601 string. IsUTC determines if Self is already UTC otherwise it will need to be converted.


TDateTime.ToString

function TDateTime.ToString(Fmt: String = 'c'): String;

Convert to a human like string. If fmt is unspecified c is used which will produce YYYY-MM-DD hh:mm:ss

  y      = Year last 2 digits
  yy     = Year last 2 digits
  yyyy   = Year as 4 digits
  m      = Month number no-leading 0
  mm     = Month number as 2 digits
  mmm    = Month using ShortDayNames (Jan)
  mmmm   = Month using LongDayNames (January)
  d      = Day number no-leading 0
  dd     = Day number as 2 digits
  ddd    = Day using ShortDayNames (Sun)
  dddd   = Day using LongDayNames  (Sunday)
  ddddd  = Day in ShortDateFormat
  dddddd = Day in LongDateFormat

  c     = Use ShortDateFormat + LongTimeFormat
  h     = Hour number no-leading 0
  hh    = Hour number as 2 digits
  n     = Minute number no-leading 0
  nn    = Minute number as 2 digits
  s     = Second number no-leading 0
  ss    = Second number as 2 digits
  z     = Milli-sec number no-leading 0s
  zzz   = Milli-sec number as 3 digits
  t     = Use ShortTimeFormat
  tt    = Use LongTimeFormat

TDateTime.AddYears

function TDateTime.AddYears(Amount: Integer = 1): TDateTime;

TDateTime.AddMonths

function TDateTime.AddMonths(Amount: Integer = 1): TDateTime;

TDateTime.AddDays

function TDateTime.AddDays(Amount: Integer = 1): TDateTime;

TDateTime.AddHours

function TDateTime.AddHours(Amount: Int64 = 1): TDateTime;

TDateTime.AddMinutes

function TDateTime.AddMinutes(Amount: Int64 = 1): TDateTime;

TDateTime.AddSeconds

function TDateTime.AddSeconds(Amount: Int64 = 1): TDateTime;

TDateTime.AddMilliseconds

function TDateTime.AddMilliseconds(Amount: Int64 = 1): TDateTime;

TDateTime.YearsBetween

function TDateTime.YearsBetween(Other: TDateTime): Integer;

TDateTime.MonthsBetween

function TDateTime.MonthsBetween(Other: TDateTime): Integer;

TDateTime.WeeksBetween

function TDateTime.WeeksBetween(Other: TDateTime): Integer;

TDateTime.DaysBetween

function TDateTime.DaysBetween(Other: TDateTime): Integer;

TDateTime.HoursBetween

function TDateTime.HoursBetween(Other: TDateTime): Int64;

TDateTime.MinutesBetween

function TDateTime.MinutesBetween(Other: TDateTime): Int64;

TDateTime.SecondsBetween

function TDateTime.SecondsBetween(Other: TDateTime): Int64;

TDateTime.MilliSecondsBetween

function TDateTime.MilliSecondsBetween(Other: TDateTime): Int64;

TDateTime.Date

property TDateTime.Date: TDateTime
property TDateTime.Date(NewValue: TDateTime)

Read or write just the date part.


TDateTime.Time

property TDateTime.Time: TDateTime
property TDateTime.Time(NewValue: TDateTime)

TDateTime.Year

property TDateTime.Year: Integer
property TDateTime.Year(NewValue: Integer)

TDateTime.Month

property TDateTime.Month: Integer
property TDateTime.Month(NewValue: Integer)

TDateTime.Day

property TDateTime.Day: Integer
property TDateTime.Day(NewValue: Integer)

TDateTime.Hour

property TDateTime.Hour: Integer
property TDateTime.Hour(NewValue: Integer)

TDateTime.Minute

property TDateTime.Minute: Integer
property TDateTime.Minute(NewValue: Integer)

TDateTime.Second

property TDateTime.Second: Integer
property TDateTime.Second(NewValue: Integer)

TDateTime.Millisecond

property TDateTime.Millisecond: Integer
property TDateTime.Millisecond(NewValue: Integer)

Now

function Now: TDateTime;

NowUTC

function NowUTC: TDateTime;

UnixTime

function UnixTime: Int64;

LocalTimeOffset

function LocalTimeOffset: Integer;

Returns the local timezone offset in minutes. This is the difference between UTC time and local time.


PreciseSleep

procedure PreciseSleep(Milliseconds: UInt32);

MillisecondsToTime

function MillisecondsToTime(Time: UInt64; out Days, Hours, Mins, Secs: Integer): Integer;

MillisecondsToTime

function MillisecondsToTime(Time: UInt64; out Years, Months, Weeks, Days, Hours, Mins, Secs: Integer): Integer;

PerformanceTimer

function PerformanceTimer: Double;

FormatMilliseconds

function FormatMilliseconds(Time: Double; Format: String): String;
Y = years
M = months
W = weeks
D = days

h = hours
m = minutes
s = seconds
u = milliseconds

Note

Doubling an argument will add padding. Example hh will produce 01 \ will escape the next character


FormatMilliseconds

function FormatMilliseconds(Time: Double; TimeSymbols: Boolean = False): String;

TStopWatch.IsPaused

property TStopWatch.IsPaused: Boolean;

TStopWatch.Start

procedure TStopWatch.Start;

TStopWatch.Resume

procedure TStopWatch.Resume;

TStopWatch.Pause

procedure TStopWatch.Pause;

TStopWatch

procedure TStopWatch.Reset;

TStopWatch.Elapsed

property TStopwatch.Elapsed: Double

TStopWatch.ElapsedFmt

function TStopwatch.ElapsedFmt(Format: String = 'u'): String;

TCountDown.Start

procedure TCountDown.Start(Milliseconds: Double);

TCountDown.Extend

procedure TCountDown.Extend(Milliseconds: Double);

TCountDown.Remaining

property TCountDown.Remaining: Double;

TCountDown.RemainingFmt

function TCountDown.RemainingFmt(Format: String = 'u'): String;

TCountDown.IsFinished

property TCountDown.IsFinished: Boolean;

TCountDown.IsPaused

property TCountDown.IsPaused: Boolean;

TCountDown.Pause

procedure TCountDown.Pause;

TCountDown.Resume

procedure TCountDown.Resume;

TCountDown.Restart

procedure TCountDown.Restart(Randomness: Integer = 0);