program Project1;
uses
SysUtils, DateUtils;
const
FMT3 = 'yyyy-mm-dd"T"hh:nn:ss.zzz"Z"';
FMT2 = 'yyyy-mm-dd"T"hh:nn:ss.zz"Z"';
FMT1 = 'yyyy-mm-dd"T"hh:nn:ss.z"Z"';
var
t, t1: TDateTime;
s: String;
begin
WriteLn(' *** 800 ms ***');
t := EncodeDate(2021, 4, 7) + EncodeTime(8, 49, 22, 800); // 800 ms past 8:49:22
s := FormatDateTime(FMT3, t);
WriteLn(s);
t1 := ScanDateTime(FMT3, S);
if t1 = t then
WriteLn('ScanDateTime returns same date/time value')
else
WriteLn('ScanDateTime returns DIFFERENT date/time value');
WriteLn;
t := EncodeDate(2021, 4, 7) + EncodeTime(8, 49, 22, 800); // 800 ms past 8:49:22
s := FormatDateTime(FMT2, t);
WriteLn(s);
t1 := ScanDateTime(FMT2, S);
if t1 = t then
WriteLn('ScanDateTime returns same date/time value')
else
WriteLn('ScanDateTime returns DIFFERENT date/time value');
WriteLn;
t := EncodeDate(2021, 4, 7) + EncodeTime(8, 49, 22, 800); // 800 ms past 8:49:22
s := FormatDateTime(FMT1, t);
WriteLn(s);
t1 := ScanDateTime(FMT1, S);
if t1 = t then
WriteLn('ScanDateTime returns same date/time value')
else
WriteLn('ScanDateTime returns DIFFERENT date/time value');
WriteLn;
WriteLn;
WriteLn(' *** 8 ms ***');
t := EncodeDate(2021, 4, 7) + EncodeTime(8, 49, 22, 8); // 8 ms past 8:49:22
s := FormatDateTime(FMT3, t);
WriteLn(s);
t1 := ScanDateTime(FMT3, S);
if t1 = t then
WriteLn('ScanDateTime returns same date/time value')
else
WriteLn('ScanDateTime returns DIFFERENT date/time value');
t := EncodeDate(2021, 4, 7) + EncodeTime(8, 49, 22, 8); // 8 ms past 8:49:22
s := FormatDateTime(FMT2, t);
WriteLn(s);
t1 := ScanDateTime(FMT2, S);
if t1 = t then
WriteLn('ScanDateTime returns same date/time value')
else
WriteLn('ScanDateTime returns DIFFERENT date/time value');
WriteLn;
t := EncodeDate(2021, 4, 7) + EncodeTime(8, 49, 22, 8); // 8 ms past 8:49:22
s := FormatDateTime(FMT1, t);
WriteLn(s);
t1 := ScanDateTime(FMT1, S);
if t1 = t then
WriteLn('ScanDateTime returns same date/time value')
else
WriteLn('ScanDateTime returns DIFFERENT date/time value');
ReadLn;
end.