Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Get Email Date/Time

Demonstrates getting the email "Date" header field in a CkDateTime object.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
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.Email,
  Chilkat.DtObj,
  Chilkat.CkDateTime;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  email: TEmail;
  dtTime: TCkDateTime;
  bLocalTime: Boolean;
  unixTime: Integer;
  dtObj: TDtObj;

begin
  success := False;

  email := TEmail.Create;

  //  Load a .eml file into the email object.
  success := email.LoadEml('/home/users/chilkat/eml/myEml.eml');

  dtTime := TCkDateTime.Create;
  dtTime.SetFromRfc822(email.EmailDateStr);

  //  Once we have the CkDateTime object, we can get the date/time in many different formats:

  //  Get as a RFC822 GMT string:
  bLocalTime := False;
  WriteLn(dtTime.GetAsRfc822(bLocalTime));

  //  Get as an RFC822 string in the local timezone.
  //  (remember, the daylight savings that existed at the given time in the past is applied)
  bLocalTime := True;
  WriteLn(dtTime.GetAsRfc822(bLocalTime));

  //  Get as a 32-bit UNIX time (local or GMT..)
  //  The Unix time is number of seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC). 
  unixTime := dtTime.GetAsUnixTime(bLocalTime);
  WriteLn('Unix time: ' + unixTime);

  //  One can also get the as a "DtObj" object for accessing the individual
  //  parts of the date/time, such as month, day, year, hour, minute, etc.
  //  The DtObj can be obtained in the GMT or local timezone:
  dtObj := TDtObj.Create;
  dtTime.ToDtObj(bLocalTime,dtObj);

  if (dtTime.LastMethodSuccess = False) then
    begin
      WriteLn('This should never really happen!');
      Exit;
    end;

  WriteLn(dtObj.Day + '-' + dtObj.Month + '-' + dtObj.Year + ' ' + dtObj.Hour + ':' + dtObj.Minute + ':' + dtObj.Second);


  email.Free;
  dtTime.Free;
  dtObj.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.