2010-12-13 3 views
1
내가 비교하면서 초를 제거하여 분 개까지 날짜에 따라 두 파일을 비교해야

...분당 datetime을 기준으로 두 파일을 비교합니까?

public class FileCompareLastwritetime : System.Collections.Generic.IEqualityComparer<System.IO.FileInfo> 
     { 
      public FileCompareLastwritetime() { } 
      public bool Equals(System.IO.FileInfo f1, System.IO.FileInfo f2) 
      { 
       return f1.LastWriteTime == f2.LastWriteTime; 
      } 
      public int GetHashCode(System.IO.FileInfo fi) 
      { 
       string s = String.Format("{0}", fi.LastWriteTime); 
       return s.GetHashCode(); 
      } 
     } 
+0

@Marc Gravell : 나는 여기의 lastwritetime을 비교하고 두 파일 ... 그것은 초까지 비교할 것이다 .. 나는 최대 개까지 비교할 필요가있다 .. – bala3569

답변

4

방법에 대해 :

public class FileCompareLastwritetime 
     : System.Collections.Generic.IEqualityComparer<System.IO.FileInfo> { 
    public FileCompareLastwritetime() { } 
    public bool Equals(System.IO.FileInfo f1, System.IO.FileInfo f2) { 
     return ToMinute(f1.LastWriteTime) == ToMinute(f2.LastWriteTime); 
    } 
    public int GetHashCode(System.IO.FileInfo fi) { 
     return ToMinute(fi.LastWriteTime).GetHashCode(); 
    } 
    static DateTime ToMinute(DateTime value) { 
     return new DateTime(value.Year, value.Month, value.Day, 
       value.Hour, value.Minute, 0, value.Kind); 
    } 
} 
+0

존 스켈트 응답을 사용하지만 그것은 나를 위해 작동하지 않습니다 ... http : //stackoverflow.com/questions/1256460/determine-equality -of-datetime-values-with-minute-precision-within-linq – bala3569

+0

@ bala3569는 "작동하지 않음"을 정의합니다 ... 그것이 주장하는 것을 수행합니다. 분으로 회전합니다. –

1
Math.Abs(time1.Subtract(time2).TotalMinutes) < 1 
+0

이러한 '같음'구현은 'a.Equals (b) 및 b.Equals (c) => a.Equals (c)'와 같이 필요한 과도기 속성을 충족하지 못합니다. – Ani

+0

@Ani, 수학적으로 동등한 구현이 아니기 때문에 이것에 관해 세미 퍼지라고 생각해야합니다. 정확한 시간으로 생성 시간을 비교하는 것이 적합하지 않기 때문에이 경우에는 진정한 방법이라고 생각합니다 : a : 10 : 50 : 00 및 b : 10 : 49 : 50 분 비교는 false를 반환하지만 c : 10 : 50 : 00 및 10:50:50은 정확한 분을 반환하고 IMO는 적절한 대답이 아닙니다. 나는 0-1 평등 한 답을 찾을 수 없다고 생각합니다. –

+0

나열된 가이드 라인입니다. "(x.Equals (y) &&.Equals (z))가 true를 반환하면 x.Equals (z)는 true를 반환합니다." http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx – Ani

관련 문제