Sample code for 30+ languages & platforms
Delphi DLL

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 Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, DtObj, JsonObject, CkDateTime;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
json: HCkJsonObject;
dateTime: HCkDateTime;
dt: HCkDtObj;
getAsLocal: Boolean;

begin
success := False;

json := CkJsonObject_Create();
CkJsonObject_putEmitCompact(json,False);

// First, let's create JSON containing some date/time strings.
CkJsonObject_UpdateString(json,'test.timestamp','2018-01-30T20:35:00Z');
CkJsonObject_UpdateString(json,'test.rfc822','Tue, 24 Apr 2018 08:47:03 -0500');
CkJsonObject_UpdateString(json,'test.dateStrings[0]','2018-01-30T20:35:00Z');
CkJsonObject_UpdateString(json,'test.dateStrings[1]','Tue, 24 Apr 2018 08:47:03 -0500');
CkJsonObject_UpdateNumber(json,'test.StartLoggingTime','1446834998.695');
CkJsonObject_UpdateNumber(json,'test.Expiration','1442877512.0');
CkJsonObject_UpdateInt(json,'test.StartTime',1518867432);

Memo1.Lines.Add(CkJsonObject__emit(json));

// 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 := CkDateTime_Create();
dt := CkDtObj_Create();
getAsLocal := False;

// Load the date/time at test.timestamp into the dateTime object.
success := CkJsonObject_DateOf(json,'test.timestamp',dateTime);
Memo1.Lines.Add(CkDateTime__getAsTimestamp(dateTime,getAsLocal));
Memo1.Lines.Add(IntToStr(CkDateTime_GetAsUnixTime(dateTime,False)));
Memo1.Lines.Add(CkDateTime__getAsRfc822(dateTime,getAsLocal));

success := CkJsonObject_DateOf(json,'test.rfc822',dateTime);
Memo1.Lines.Add(CkDateTime__getAsTimestamp(dateTime,getAsLocal));

CkJsonObject_putI(json,0);
success := CkJsonObject_DateOf(json,'test.dateStrings[i]',dateTime);
Memo1.Lines.Add(CkDateTime__getAsTimestamp(dateTime,getAsLocal));

CkJsonObject_putI(json,1);
success := CkJsonObject_DateOf(json,'test.dateStrings[i]',dateTime);
Memo1.Lines.Add(CkDateTime__getAsTimestamp(dateTime,getAsLocal));

success := CkJsonObject_DateOf(json,'test.StartLoggingTime',dateTime);
Memo1.Lines.Add(CkDateTime__getAsTimestamp(dateTime,getAsLocal));

success := CkJsonObject_DateOf(json,'test.Expiration',dateTime);
Memo1.Lines.Add(CkDateTime__getAsTimestamp(dateTime,getAsLocal));

success := CkJsonObject_DateOf(json,'test.StartTime',dateTime);
Memo1.Lines.Add(CkDateTime__getAsTimestamp(dateTime,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 := CkJsonObject_DtOf(json,'test.timestamp',getAsLocal,dt);
Memo1.Lines.Add('month=' + IntToStr(CkDtObj_getMonth(dt)) + ', day=' + IntToStr(CkDtObj_getDay(dt)) + ', year=' + IntToStr(CkDtObj_getYear(dt))
     + ', hour=' + IntToStr(CkDtObj_getHour(dt)) + ', minute=' + IntToStr(CkDtObj_getMinute(dt)));

success := CkJsonObject_DtOf(json,'test.rfc822',getAsLocal,dt);
Memo1.Lines.Add('month=' + IntToStr(CkDtObj_getMonth(dt)) + ', day=' + IntToStr(CkDtObj_getDay(dt)) + ', year=' + IntToStr(CkDtObj_getYear(dt))
     + ', hour=' + IntToStr(CkDtObj_getHour(dt)) + ', minute=' + IntToStr(CkDtObj_getMinute(dt)));

CkJsonObject_putI(json,0);
success := CkJsonObject_DtOf(json,'test.dateStrings[i]',getAsLocal,dt);
Memo1.Lines.Add('month=' + IntToStr(CkDtObj_getMonth(dt)) + ', day=' + IntToStr(CkDtObj_getDay(dt)) + ', year=' + IntToStr(CkDtObj_getYear(dt))
     + ', hour=' + IntToStr(CkDtObj_getHour(dt)) + ', minute=' + IntToStr(CkDtObj_getMinute(dt)));

CkJsonObject_putI(json,1);
success := CkJsonObject_DtOf(json,'test.dateStrings[i]',getAsLocal,dt);
Memo1.Lines.Add('month=' + IntToStr(CkDtObj_getMonth(dt)) + ', day=' + IntToStr(CkDtObj_getDay(dt)) + ', year=' + IntToStr(CkDtObj_getYear(dt))
     + ', hour=' + IntToStr(CkDtObj_getHour(dt)) + ', minute=' + IntToStr(CkDtObj_getMinute(dt)));

success := CkJsonObject_DtOf(json,'test.StartLoggingTime',getAsLocal,dt);
Memo1.Lines.Add('month=' + IntToStr(CkDtObj_getMonth(dt)) + ', day=' + IntToStr(CkDtObj_getDay(dt)) + ', year=' + IntToStr(CkDtObj_getYear(dt))
     + ', hour=' + IntToStr(CkDtObj_getHour(dt)) + ', minute=' + IntToStr(CkDtObj_getMinute(dt)));

success := CkJsonObject_DtOf(json,'test.Expiration',getAsLocal,dt);
Memo1.Lines.Add('month=' + IntToStr(CkDtObj_getMonth(dt)) + ', day=' + IntToStr(CkDtObj_getDay(dt)) + ', year=' + IntToStr(CkDtObj_getYear(dt))
     + ', hour=' + IntToStr(CkDtObj_getHour(dt)) + ', minute=' + IntToStr(CkDtObj_getMinute(dt)));

success := CkJsonObject_DtOf(json,'test.StartTime',getAsLocal,dt);
Memo1.Lines.Add('month=' + IntToStr(CkDtObj_getMonth(dt)) + ', day=' + IntToStr(CkDtObj_getDay(dt)) + ', year=' + IntToStr(CkDtObj_getYear(dt))
     + ', hour=' + IntToStr(CkDtObj_getHour(dt)) + ', minute=' + IntToStr(CkDtObj_getMinute(dt)));

// 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

CkJsonObject_Dispose(json);
CkDateTime_Dispose(dateTime);
CkDtObj_Dispose(dt);

end;