gpt4 book ai didi

c# - 比较没有毫秒的日期时间

转载 作者:可可西里 更新时间:2023-11-01 03:06:05 27 4
gpt4 key购买 nike

我需要比较两个单独列表中的日期。每个列表都由 MyFile 对象构成。这是我创建的一个类,目的是为了获得有关文件的特定信息,例如名称、修改日期、扩展名等。唯一的问题是我的第二个列表中的很多 MyFiles 对象(从外部硬盘驱动器获取)不具有直到毫秒的日期时间戳(LastWriteTime)。我相信这就是我的比较不起作用的原因。例如,这里有一个我的比较失败的例子:“Why does c# thinks the dates are not equal?” Debug

a 和 b 是 MyFile 对象,MyFile 类包含一个属性 ticks,它等于 file.LastWriteTime.Ticks 它们没有在程序中使用,我只是为了调试目的而包含它们。于是调试了几次才知道最后7位代表的是一个文件的毫秒数。结果,我在 MyFile 中的 ticks 属性现在包含 11 个有效数字而不是 18 个(注释 18-11 = 7)。问题在于,当我比较刻度时,当我尝试通过除以 10000000 然后乘以 10000000 来更新刻度属性时,我得到了奇怪的结果。由于我的刻度属性是一个 long int,因此当我划分。我得到更少的“错误”。但是还有其他一些时候我会得到这样的东西: enter image description here

在这里我们可以看到日期至少在第二个之前是相同的。为什么 c# 认为它不是同一日期?我必须创建自己的“Ticks”函数吗?我知道我将 dateTime 转换为字符串然后比较它但我想知道对象是否 a.dateModified比对象 b.dateModified 更新

最佳答案

尝试比较特定精度:

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");

关于c# - 比较没有毫秒的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6074387/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com