Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
JSON Date Parsing
See more JSON Examples
Demonstrates how to parse date/time strings from JSON.Note: This example uses the DtOf and DateOf methods introduced in Chilkat v9.5.0.73
Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.DtObj,
Chilkat.JsonObject,
Chilkat.CkDateTime;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
json: TJsonObject;
dateTime: TCkDateTime;
dt: TDtObj;
getAsLocal: Boolean;
begin
success := False;
json := TJsonObject.Create;
json.EmitCompact := False;
// First, let's create JSON containing some date/time strings.
json.UpdateString('test.timestamp','2018-01-30T20:35:00Z');
json.UpdateString('test.rfc822','Tue, 24 Apr 2018 08:47:03 -0500');
json.UpdateString('test.dateStrings[0]','2018-01-30T20:35:00Z');
json.UpdateString('test.dateStrings[1]','Tue, 24 Apr 2018 08:47:03 -0500');
json.UpdateNumber('test.StartLoggingTime','1446834998.695');
json.UpdateNumber('test.Expiration','1442877512.0');
json.UpdateInt('test.StartTime',1518867432);
WriteLn(json.Emit());
// We've built the following JSON:
// {
// "test": {
// "timestamp": "2018-01-30T20:35:00Z",
// "rfc822": "Tue, 24 Apr 2018 08:47:03 -0500",
// "dateStrings": [
// "2018-01-30T20:35:00Z",
// "Tue, 24 Apr 2018 08:47:03 -0500"
// ],
// "StartLoggingTime": 1446834998.695,
// "Expiration": 1442877512.0,
// "StartTime": 1518867432
// }
// }
// Use the DateOf and DtOf methods to load Chilkat date/time objects with the date/time values.
// The CkDateTime object is primarily for loading a date/time from numerous formats, and then getting
// the date/time in various formats. Thus, it's primarly for date/time format conversion.
// The DtObj object holds a date/time where the individual components (day, month, year, hour, minutes, etc.) are
// immediately accessible as integers.
dateTime := TCkDateTime.Create;
dt := TDtObj.Create;
getAsLocal := False;
// Load the date/time at test.timestamp into the dateTime object.
success := json.DateOf('test.timestamp',dateTime);
WriteLn(dateTime.GetAsTimestamp(getAsLocal));
WriteLn(dateTime.GetAsUnixTime(False));
WriteLn(dateTime.GetAsRfc822(getAsLocal));
success := json.DateOf('test.rfc822',dateTime);
WriteLn(dateTime.GetAsTimestamp(getAsLocal));
json.I := 0;
success := json.DateOf('test.dateStrings[i]',dateTime);
WriteLn(dateTime.GetAsTimestamp(getAsLocal));
json.I := 1;
success := json.DateOf('test.dateStrings[i]',dateTime);
WriteLn(dateTime.GetAsTimestamp(getAsLocal));
success := json.DateOf('test.StartLoggingTime',dateTime);
WriteLn(dateTime.GetAsTimestamp(getAsLocal));
success := json.DateOf('test.Expiration',dateTime);
WriteLn(dateTime.GetAsTimestamp(getAsLocal));
success := json.DateOf('test.StartTime',dateTime);
WriteLn(dateTime.GetAsTimestamp(getAsLocal));
// Output so far:
// 2018-01-30T20:35:00Z
// 1517344500
// Tue, 30 Jan 2018 20:35:00 GMT
// 2018-04-24T13:47:03Z
// 2018-01-30T20:35:00Z
// 2018-04-24T13:47:03Z
// 2015-11-07T00:36:38Z
// 2015-09-22T04:18:32Z
// 2018-02-17T17:37:12Z
// Now load the date/time strings into the dt object:
success := json.DtOf('test.timestamp',getAsLocal,dt);
WriteLn('month=' + dt.Month + ', day=' + dt.Day + ', year=' + dt.Year + ', hour=' + dt.Hour + ', minute=' + dt.Minute);
success := json.DtOf('test.rfc822',getAsLocal,dt);
WriteLn('month=' + dt.Month + ', day=' + dt.Day + ', year=' + dt.Year + ', hour=' + dt.Hour + ', minute=' + dt.Minute);
json.I := 0;
success := json.DtOf('test.dateStrings[i]',getAsLocal,dt);
WriteLn('month=' + dt.Month + ', day=' + dt.Day + ', year=' + dt.Year + ', hour=' + dt.Hour + ', minute=' + dt.Minute);
json.I := 1;
success := json.DtOf('test.dateStrings[i]',getAsLocal,dt);
WriteLn('month=' + dt.Month + ', day=' + dt.Day + ', year=' + dt.Year + ', hour=' + dt.Hour + ', minute=' + dt.Minute);
success := json.DtOf('test.StartLoggingTime',getAsLocal,dt);
WriteLn('month=' + dt.Month + ', day=' + dt.Day + ', year=' + dt.Year + ', hour=' + dt.Hour + ', minute=' + dt.Minute);
success := json.DtOf('test.Expiration',getAsLocal,dt);
WriteLn('month=' + dt.Month + ', day=' + dt.Day + ', year=' + dt.Year + ', hour=' + dt.Hour + ', minute=' + dt.Minute);
success := json.DtOf('test.StartTime',getAsLocal,dt);
WriteLn('month=' + dt.Month + ', day=' + dt.Day + ', year=' + dt.Year + ', hour=' + dt.Hour + ', minute=' + dt.Minute);
// Output:
// month=1, day=30, year=2018, hour=20, minute=35
// month=4, day=24, year=2018, hour=13, minute=47
// month=1, day=30, year=2018, hour=20, minute=35
// month=4, day=24, year=2018, hour=13, minute=47
// month=11, day=6, year=2015, hour=18, minute=36
// month=9, day=21, year=2015, hour=23, minute=18
// month=2, day=17, year=2018, hour=11, minute=37
json.Free;
dateTime.Free;
dt.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.