mORMot and Open Source friends
Check-in [e4334bd5b5]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:{3566} fixed DateTimeMSToString/UnixMSTimeToString
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: e4334bd5b527995e27a2388e92c14ca98bcd9bac
User & Date: ab 2017-03-30 15:05:52
Context
2017-03-30
15:07
{3567} enhanced log information to TSQLRest.AsynchInterning process check-in: 543af7c8a0 user: ab tags: trunk
15:05
{3566} fixed DateTimeMSToString/UnixMSTimeToString check-in: e4334bd5b5 user: ab tags: trunk
12:38
{3565} defined JSON_OPTIONS_NAMEVALUEINTERN and JSON_OPTIONS_FAST_EXTENDEDINTERN constants check-in: 2e15ac6abe user: ab tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to SynCommons.pas.

19052
19053
19054
19055
19056
19057
19058
19059
19060
19061
19062
19063
19064
19065
19066
.....
19079
19080
19081
19082
19083
19084
19085
19086
19087
19088
19089
19090
19091
19092
19093
.....
33900
33901
33902
33903
33904
33905
33906
33907
33908
33909
33910
33911
33912
33913
33914
  finally
    Safe.Unlock;
  end;
end;

function TRawUTF8InterningSlot.Clean(aMaxRefCount: integer): integer;
var i: integer;
    s,d: PPtrUInt; // points to RawUTF8 values
begin
  result := 0;
  Safe.Lock;
  try
    if Safe.Padding[0].VInteger=0 then
      exit;
    s := pointer(Value);
................................................................................
          s^ := 0; // avoid GPF
        end;
        inc(d);
      end;
      inc(s);
    end;
    if result>0 then begin
      Values.SetCount((PtrUInt(d)-PtrUInt(Value))div sizeof(RawUTF8));
      Values.ReHash;
    end;
  finally
    Safe.UnLock;
  end;
end;

................................................................................
var I: TTimeLogBits;
begin
  I.FromUTCTime;
  result := I.Text(Expanded,FirstTimeChar);
end;

const
  DTMS_FMT: array[boolean] of RawUTF8 = ('%%%%%%%%%', '%-%-%%:%:%:%.%%');

function DateTimeMSToString(DateTime: TDateTime; Expanded: boolean;
  FirstTimeChar: AnsiChar; const TZD: RawUTF8): RawUTF8;
var HH,MM,SS,MS,Y,M,D: word;
begin //  'YYYY-MM-DD hh:mm:ss.sssZ' or 'YYYYMMDD hhmmss.sssZ' format
  if DateTime=0 then begin
    result := '';






|







 







|







 







|







19052
19053
19054
19055
19056
19057
19058
19059
19060
19061
19062
19063
19064
19065
19066
.....
19079
19080
19081
19082
19083
19084
19085
19086
19087
19088
19089
19090
19091
19092
19093
.....
33900
33901
33902
33903
33904
33905
33906
33907
33908
33909
33910
33911
33912
33913
33914
  finally
    Safe.Unlock;
  end;
end;

function TRawUTF8InterningSlot.Clean(aMaxRefCount: integer): integer;
var i: integer;
    s,d: PPtrUInt; // points to RawUTF8 values (bypass COW assignments)
begin
  result := 0;
  Safe.Lock;
  try
    if Safe.Padding[0].VInteger=0 then
      exit;
    s := pointer(Value);
................................................................................
          s^ := 0; // avoid GPF
        end;
        inc(d);
      end;
      inc(s);
    end;
    if result>0 then begin
      Values.SetCount((PtrUInt(d)-PtrUInt(Value))div sizeof(d^));
      Values.ReHash;
    end;
  finally
    Safe.UnLock;
  end;
end;

................................................................................
var I: TTimeLogBits;
begin
  I.FromUTCTime;
  result := I.Text(Expanded,FirstTimeChar);
end;

const
  DTMS_FMT: array[boolean] of RawUTF8 = ('%%%%%%%%%', '%-%-%%%:%:%.%%');

function DateTimeMSToString(DateTime: TDateTime; Expanded: boolean;
  FirstTimeChar: AnsiChar; const TZD: RawUTF8): RawUTF8;
var HH,MM,SS,MS,Y,M,D: word;
begin //  'YYYY-MM-DD hh:mm:ss.sssZ' or 'YYYYMMDD hhmmss.sssZ' format
  if DateTime=0 then begin
    result := '';

Changes to SynopseCommit.inc.

1
'1.18.3565'
|
1
'1.18.3566'