瀏覽代碼

ADD: FileTimeCompare function

Alexander Koblov 11 年之前
父節點
當前提交
8d59fa8a61
共有 1 個文件被更改,包括 28 次插入1 次删除
  1. 28 1
      components/doublecmd/dcdatetimeutils.pas

+ 28 - 1
components/doublecmd/dcdatetimeutils.pas

@@ -109,6 +109,7 @@ function MonthToNumberDef(const ShortMonthName: String; Default: Word): Word;
 }
 }
 function YearShortToLong(Year: Word): Word;
 function YearShortToLong(Year: Word): Word;
 function TwelveToTwentyFour(Hour: Word; Modifier: AnsiString): Word;
 function TwelveToTwentyFour(Hour: Word; Modifier: AnsiString): Word;
+function FileTimeCompare(SourceTime, TargetTime: TDateTime; NtfsShift: Boolean): Integer;
 
 
 type
 type
   EDateOutOfRange = class(EConvertError)
   EDateOutOfRange = class(EConvertError)
@@ -544,6 +545,32 @@ begin
   end;
   end;
 end;
 end;
 
 
+function FileTimeCompare(SourceTime, TargetTime: TDateTime; NtfsShift: Boolean): Integer;
+const
+  TimeDiff = 3100 / MSecsPerDay;
+  NtfsDiff = MinsPerHour * SecsPerMin;
+var
+  FileTimeDiff,
+  NtfsTimeDiff: TDateTime;
+begin
+  FileTimeDiff:= SourceTime - TargetTime;
+  if NtfsShift then
+  begin
+    NtfsTimeDiff:= FileTimeDiff - NtfsDiff;
+    if (NtfsTimeDiff > -TimeDiff) and (NtfsTimeDiff < TimeDiff) then
+      Exit(0);
+    NtfsTimeDiff:= FileTimeDiff + NtfsDiff;
+    if (NtfsTimeDiff > -TimeDiff) and (NtfsTimeDiff < TimeDiff) then
+      Exit(0);
+  end;
+  if (FileTimeDiff > -TimeDiff) and (FileTimeDiff < TimeDiff) then
+    Result:= 0
+  else if FileTimeDiff > 0 then
+    Result:= +1
+  else if FileTimeDiff < 0 then
+    Result:= -1;
+end;
+
 { EDateOutOfRange }
 { EDateOutOfRange }
 
 
 constructor EDateOutOfRange.Create(ADateTime: TDateTime);
 constructor EDateOutOfRange.Create(ADateTime: TDateTime);
@@ -574,4 +601,4 @@ initialization
 {$ENDIF}
 {$ENDIF}
 
 
 end.
 end.
-
+