【发布时间】:2026-01-18 12:40:01
【问题描述】:
我需要比较两个单独列表中的日期。每个列表都由 MyFile 对象构成。这是我创建的一个类,用于获取有关文件的特定信息,例如名称、日期修改、扩展名等。唯一的问题是我的第二个列表中的很多 MyFiles 对象(从外部硬盘驱动器获取的对象)没有有日期时间戳(LastWriteTime)直到毫秒。我相信这就是我的比较不起作用的原因。例如,这是我的比较失败的示例:“为什么 c# 认为日期不相等?”
a 和 b 是 MyFile 对象,MyFile 类包含一个属性 ticks ,它等于 file.LastWriteTime.Ticks 它们没有在程序中使用,我只是将它们包含在调试目的。所以经过几次调试后,我意识到最后 7 位数字代表了一个文件的毫秒数。因此,我在 MyFile 中的 ticks 属性现在包含 11 个有效数字而不是 18 个(注释 18-11 = 7)。问题在于,当我比较刻度时,当我尝试通过除以 10000000 然后乘以 10000000 来更新刻度属性时,会得到奇怪的结果。由于我的刻度属性是一个长整数,所以当我尝试更新刻度属性时,它会丢失最后 7 位数字划分。我得到的“错误”更少。但是还有其他一些时候我会得到这样的东西:
在这里我们可以看到日期至少在第二个之前是相同的。为什么 c# 认为它不是同一个日期?我必须创建自己的“Ticks”功能吗?我知道我将 dateTime 转换为字符串然后比较它,但我想知道对象是否为 a.dateModified 比对象 b.dateModified 更新
【问题讨论】:
-
这两个日期真的有不同的
Millisecond值吗? -
这是一个工作方法:*.com/questions/1004698/…通过活力检查答案