title: Why TFDBatchMove raises exception ELocalTimeInvalid for date field with value "03/11/2019"?
body: <p>I'm using Delphi 10.3 Rio Update 1 on a Windows 7 SP1 machine.</p>
  
  <p>My program's purpose is to convert a <code>TFDMemtable</code> into a JSON format.   For a reason that I can't understand, when the date field of this <code>TFDMemTable</code> has the value <code>'03/11/2019'</code>, using the DisplayFormat <code>"day/month/year"</code>, it raises an exception:</p>
  
  <blockquote>
    <p>Project ProjMemtabJSON.exe raised exception class ELocalTimeInvalid with message 'The given "03/11/2019" local time is invalid (situated within the missing period prior to DST).'.</p>
  </blockquote>
  
  <p>Any other dates different than <code>"Nov, 3rd 2019"</code> work fine. </p>
  
  <p>I have no clue what is going on here!</p>
  
  <pre><code>program ProjMemtabJSON;
  
  {$APPTYPE CONSOLE}
  
  {$R *.res}
  
  uses
    System.SysUtils,
    System.Classes,
    System.JSON,
    FireDAC.Comp.DataSet,
    FireDAC.Comp.Client,
    FireDAC.Comp.BatchMove,
    FireDAC.Comp.BatchMove.DataSet,
    FireDAC.Comp.BatchMove.JSON,
    Data.DB;
  
  Var
    Fmemtable   : TFDmemtable ;
    FJSONArray  : TJSONArray;
    FDBatchMoveJSONWriter1     : TFDBatchMoveJSONWriter;
    FDBatchMoveDataSetReader1  : TFDBatchMoveDataSetReader;
    FDBatchMove1               : TFDBatchMove;
  
  procedure  CreateMemtable;
  begin
    Fmemtable := TFDmemtable.Create(nil);
    FMemTable.FieldDefs.Add('ID', ftInteger, 0, False);
    FMemTable.FieldDefs.Add('Name', ftString, 20, False);
    FMemTable.FieldDefs.Add('Status', ftString, 20, False);
    FMemTable.FieldDefs.Add('Duedate', ftdatetime,0, False);
    FMemTable.CreateDataSet;
  end;
  
  procedure FillMemtable;
  begin
    FMemtable.Append;
    FMemtable.Fields[0].Value := 10;                           // ID
    FMemtable.Fields[1].Value := 'John';                       // Name
    FMemtable.Fields[2].Value := 'Active';                    // Status
    { ==&gt; HERE IS THE PROBLEM :  change this date to 03/11/2019  i.e.  03/Nov/2019 and an error will raise }
    FMemtable.Fields[3].Value := StrToDate('02/11/2019');     // Due date dd/mm/yyyy
  end;
  
  procedure PrintMemtable;
  begin
    writeln('ID       : ' ,Fmemtable.Fields[0].AsString);
    writeln('Name     : ' ,Fmemtable.Fields[1].AsString);
    writeln('Status   : ' ,Fmemtable.Fields[2].AsString);
    writeln('Due Date : ' ,Fmemtable.Fields[3].AsString);
  end;
  
  function TableToJson : TJSONArray;
  begin
    Result := TJSONArray.Create;
    try
      FDBatchMoveDataSetReader1 := TFDBatchMoveDataSetReader.Create(nil);
      FDBatchMoveJSONWriter1    := TFDBatchMoveJSONWriter.Create(nil);
      FDBatchMove1              := TFDBatchMove.Create(nil);
  
      FDBatchMove1.Reader       := FDBatchMoveDataSetReader1 ;
      FDBatchMove1.Writer       := FDBatchMoveJSONWriter1;
  
      try
        if not FMemtable.Active then
          FMemtable.Active := True;
        FDBatchMoveDataSetReader1.DataSet := FMemtable;
        FDBatchMoveJSONWriter1.JsonArray  := Result;
        FDBatchMove1.Execute;
      except
        on E: Exception do
          raise Exception.Create('Error Message: ' + E.Message);
      end;
    finally
      FDBatchMoveDataSetReader1.Free;
      FDBatchMoveJSONWriter1.Free;
      FDBatchMove1.Free;
    end;
  end;
  
  begin
    try
      { TODO -oUser -cConsole Main : Insert code here }
  
      Creatememtable;
      FillMemtable;
      PrintMemtable;
  
      FJSONArray   := TableToJSON;
  
      readln;
    except
      on E: Exception do
        Writeln(E.ClassName, ': ', E.Message);
    end;
  end.
  </code></pre>