@@ -447,7 +447,8 @@ TSynSystemTime = record
447
447
{ $ifdef HASINLINE} inline;{ $endif}
448
448
// / fill fields from the given value - but not DayOfWeek
449
449
procedure FromDateTime (const dt: TDateTime);
450
- // / fill Year/Month/Day fields from the given value - but not DayOfWeek
450
+ // / fill Year/Month/Day fields from the given value
451
+ // - but do not compute DayOfWeek, nor touch the time fields
451
452
// - faster than the RTL DecodeDate() function
452
453
procedure FromDate (const dt: TDateTime);
453
454
// / fill fields from the given value - but not DayOfWeek
@@ -2100,7 +2101,7 @@ function TSynSystemTime.IsEqual(const another: TSynSystemTime): boolean;
2100
2101
function TSynSystemTime.IsDateEqual (const date: TSynDate): boolean;
2101
2102
begin
2102
2103
result := (PCardinal(@Year)^ = PCardinal(@TSynDate(date).Year)^) and // +Month
2103
- (Day = TSynDate(date).Day);
2104
+ (Day = TSynDate(date).Day); // just ignore DayOfWeek
2104
2105
end ;
2105
2106
2106
2107
procedure TSynSystemTime.FromNowUtc ;
@@ -2138,6 +2139,7 @@ procedure TSynSystemTime.FromDate(const dt: TDateTime);
2138
2139
var
2139
2140
t, t2, t3: PtrUInt;
2140
2141
begin
2142
+ PInt64(@Year)^ := 0 ; // quickly reset all Date fields
2141
2143
t := Trunc(dt);
2142
2144
t := (t + 693900 ) * 4 - 1 ;
2143
2145
if PtrInt(t) >= 0 then
@@ -2157,10 +2159,7 @@ procedure TSynSystemTime.FromDate(const dt: TDateTime);
2157
2159
inc(Year);
2158
2160
end ;
2159
2161
Month := t3;
2160
- DayOfWeek := 0 ; // not set by default
2161
- end
2162
- else
2163
- PInt64(@Year)^ := 0 ;
2162
+ end ;
2164
2163
end ;
2165
2164
2166
2165
procedure TSynSystemTime.FromTime (const dt: TDateTime);
0 commit comments