C# 根据datetime将两个文件比较到分钟?
我需要比较两个文件的基础上datetime到分钟消除秒,而比较C# 根据datetime将两个文件比较到分钟?,c#,linq,C#,Linq,我需要比较两个文件的基础上datetime到分钟消除秒,而比较 public class FileCompareLastwritetime : System.Collections.Generic.IEqualityComparer<System.IO.FileInfo> { public FileCompareLastwritetime() { } public bool Equals(System.IO.FileIn
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();
}
}
公共类文件ComparelastWriteTime:System.Collections.Generic.IEqualityComparer
{
公共文件CompareAlsWriteTime(){}
public bool等于(System.IO.FileInfo f1、System.IO.FileInfo f2)
{
返回f1.LastWriteTime==f2.LastWriteTime;
}
public int GetHashCode(System.IO.FileInfo-fi)
{
string s=string.Format(“{0}”,fi.LastWriteTime);
返回s.GetHashCode();
}
}
那么:
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);
}
}
public类FileCompareLastwritetime
:System.Collections.Generic.IEqualityComparer{
公共文件CompareAlsWriteTime(){}
public bool等于(System.IO.FileInfo f1、System.IO.FileInfo f2){
返回ToMinute(f1.LastWriteTime)=ToMinute(f2.LastWriteTime);
}
public int GetHashCode(System.IO.FileInfo-fi){
返回ToMinute(fi.LastWriteTime).GetHashCode();
}
静态DateTime ToMinute(DateTime值){
返回新的日期时间(value.Year、value.Month、value.Day、,
value.Hour,value.Minute,0,value.Kind);
}
}
那么:
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);
}
}
public类FileCompareLastwritetime
:System.Collections.Generic.IEqualityComparer{
公共文件CompareAlsWriteTime(){}
public bool等于(System.IO.FileInfo f1、System.IO.FileInfo f2){
返回ToMinute(f1.LastWriteTime)=ToMinute(f2.LastWriteTime);
}
public int GetHashCode(System.IO.FileInfo-fi){
返回ToMinute(fi.LastWriteTime).GetHashCode();
}
静态DateTime ToMinute(DateTime值){
返回新的日期时间(value.Year、value.Month、value.Day、,
value.Hour,value.Minute,0,value.Kind);
}
}
Math.Abs(time1.Subtract(time2.TotalMinutes)<1
Math.Abs(time1.Subtract(time2.TotalMinutes)<1
@Marc Gravel:这里我比较两个文件的lastwritetime…它将比较到秒..我需要比较到分钟..@Marc Gravel:这里我比较两个文件的lastwritetime…它将比较到秒..我需要比较到分钟..使用jon skeets的答案,但对我不起作用..@bala3569定义“不起作用”。。。它做它声称的事情;四舍五入(向下)到一分钟。使用jon skeets的答案,但它对我不起作用…@bala3569定义“不起作用”。。。它做它声称的事情;四舍五入(向下)到一分钟。这样一个Equals
实现将无法满足传递性的要求-即a.Equals(b)和b.Equals(c)=>a.Equals(c)
@Ani,这不是数学上的平等实现,你应该对此半模糊地思考,我认为在这种情况下,真正的方法是这样的,因为,即按精确分钟比较创建时间不合适:a:10:50:00和b:10:49:50分钟比较返回false,但对于c:10:50:00和10:50:50,按精确分钟比较返回true,在我看来,这不是一个合适的答案。我认为你找不到任何好的0-1相等的答案。这是一个列出的指南。“如果(x.Equals(y)和&y.Equals(z))返回true,那么x.Equals(z)返回true。”@Ani,我知道你想说什么,我想你知道我说了什么,只要想想这个问题离开MSDN,如果你以另一种方式思考,我们处于相反的位置。这样的Equals
实现将无法满足传递性的要求-即a.Equals(b)和b.Equals(c)=>a.Equals(c)
@Ani,这不是数学上的平等实现,你应该对此进行半模糊的思考,我认为在这种情况下,真正的方式是这样的,因为,即按精确分钟比较创建时间不合适:a:10:50:00和b:10:49:50分钟比较返回false,但对于c:10:50:00和10:50:50,按精确分钟比较返回true,在我看来,这不是一个合适的答案。我认为你找不到任何好的0-1相等的答案。这是一个列出的指南。“如果(x.Equals(y)&&y.Equals(z))返回true,那么x.Equals(z)返回true。”@Ani,我知道你想说什么,我想你知道我说了什么,只要想想这个问题,离开MSDN,如果你从另一个角度想,我们是对立的。