我需要在两个单独的列表中比较日期。每个列表都由MyFile对象构成。这是我创建的一个类,用于获取有关文件的特定信息,例如name,dateModified,extension等。唯一的问题是我的第二个列表中的很多MyFiles对象(从外部硬盘驱动器获取)没有将dateTime标记(LastWriteTime)保留到毫秒。我相信这就是为什么我的比较不起作用的原因。例如,这里是我的比较失败的一个例子:“为什么c#认为日期不相等?”
a和b是MyFile对象,MyFile类包含属性ticks,它等于file.LastWriteTime.Ticks它们没有在程序中使用,我只是将它们包含在内用于调试目的。因此,经过多次调试后,我意识到最后7位代表文件的毫秒数。因此,我在MyFile中的ticks属性现在包含11个有效数字而不是18个(注意18-11 = 7)。这个问题是,当我比较滴答时,当我尝试通过除以10000000然后多打10000000来更新ticks属性时,我得到奇怪的结果。因为我的ticks propery是一个long int,它将丢失最后7位数当我划分。我得到的'错误'更少。但是有一些其他时候我得到这样的东西:
在这里,我们可以看到日期至少相同,直到第二个。为什么c#认为它不是同一个日期?我是否必须创建自己的“Ticks”功能?我知道我将dateTime转换为字符串然后比较它但我希望知道一个对象a.dateModified的可能性 比对象b.dateModified
更新答案 0 :(得分:32)
尝试与特定精度进行比较:
DateTime a, b;
// fill a and b with the values you need
if (Math.Abs((a-b).TotalSeconds) < 1)
Console.WriteLine("File doesn't need to be copied");
else
Console.WriteLine("File needs to be copied");