比较datetime而不是毫秒

Ton*_*Nam 17 c# datetime

我需要在两个单独的列表中比较日期.每个列表都由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更新的可能性

Zru*_*uty 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");
Run Code Online (Sandbox Code Playgroud)