我需要根据日期时间比较两个文件。我需要检查这两个文件是否是使用相同的日期时间创建或修改的。我用这段代码来读取文件的日期时间......
string fileName = txtfile1.Text;
var ftime = File.GetLastWriteTime(fileName).ToString();
string fileName2 = txtfile2.Text;
var ftime2 = File.GetLastWriteTime(fileName2).ToString();
有什么建议吗?
答案 0 :(得分:16)
请勿对ToString()
返回的DateTime
值致电GetLastWriteTime()
。这样做:
DateTime ftime = File.GetLastWriteTime(fileName);
DateTime ftime2 = File.GetLastWriteTime(fileName2);
然后您可以比较ftime
和ftime2
:
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;