如何根据日期时间比较两个文件?

时间:2010-12-06 13:43:23

标签: c#

我需要根据日期时间比较两个文件。我需要检查这两个文件是否是使用相同的日期时间创建或修改的。我用这段代码来读取文件的日期时间......

string fileName = txtfile1.Text;
var ftime = File.GetLastWriteTime(fileName).ToString();
string fileName2 = txtfile2.Text;
var ftime2 = File.GetLastWriteTime(fileName2).ToString();

有什么建议吗?

5 个答案:

答案 0 :(得分:16)

请勿对ToString()返回的DateTime值致电GetLastWriteTime()。这样做:

DateTime ftime = File.GetLastWriteTime(fileName);
DateTime ftime2 = File.GetLastWriteTime(fileName2);

然后您可以比较ftimeftime2

if (ftime == ftime2)
{
   // Files were created or modified at the same time
}

答案 1 :(得分:2)

嗯,怎么样

ftime == ftime2

?不需要ToString,最好只按原样比较DateTimes。

答案 2 :(得分:1)

GetLastWriteTime()返回一个DateTime对象,因此您可以这样做:

if (File.GetLastWriteTime(filename).CompareTo(File.GetLastWriteTime(filename2)) == 0)

测试它们是否具有相同的时间戳。

有关比较DateTime对象的更多提示,请参阅this

答案 3 :(得分:1)

文件系统中存储的最后修改时间的精度在不同的文件系统(VFAT,FAT,NTFS)之间有所不同。因此,最好使用epsillon环境,或者让用户选择一个合理的值,或者根据所涉及的文件系统选择一个值。

https://superuser.com/questions/937380/get-creation-time-of-file-in-milliseconds

double epsillon = 2.0
DateTime lastUpdateA = File.GetLastWriteTime(filename);
DateTime lastUpdateB = File.GetLastWriteTime(filename2);

if (Math.Abs(Math.Round((lastUpdateA - lastUpdateB).TotalSeconds)) > epsillon)
 different = true;

答案 4 :(得分:-3)

bool isMatched=false;
int ia = string.Compare(ftime.ToString(), ftime2.ToString());
if (string.Compare(ftime.ToString(), ftime.ToString()) == 0)
    isMatched = true;
else
    isMatched = false;