Я новичок в C#, так что простите меня. Я пытаюсь сравнить время создания файла с определенной датой/временем.
т.е. - файл test.text создан 25/6/2018 10:21:23, если он совпадает, то не совпадает.
DateTime comparedate = new DateTime(2018, 6, 25, 10, 21, 23);
if (File.GetCreationTime("test.txt").CompareTo(comparedate))
{
console.writeline("match");
}
else
{
console.writeline("no match");
}
Я знаю, что делаю это совершенно неправильно. Есть ли лучший способ сравнить время создания файла с определенной датой/временем. заранее спасибо.
Вы можете использовать
Equals
, но учтите, что они, скорее всего, никогда точно не совпадут, поскольку объект DateTime хранит информацию с точностью до тика (1 десятимиллионная доля секунды), а дата вашего файла должна быть равна 0 мс, 0ns точно соответствовать. Вам, вероятно, придется тестировать каждый компонент даты отдельно...fileDate.Date==comparedate.Date && fileDate.Hour == comparedate.Hour &&
и т.д..Также
CompareTo
возвращает три класса значений. 0, положительный и отрицательный. Чтобы проверить совпадение с помощьюCompareTo
, вы должны сравнить результат с нулем.if (File.GetCreationTime("test.txt").CompareTo(comparedate) == 0) { /* equal */ }
, но, как говорится в моем комментарии выше, это будет сравниваться с отметкой, поэтому точное совпадение в вашем сценарии маловероятно.Спасибо чувак! очень признателен, это сделало трюк! теперь у меня есть лучшее понимание, я попытаюсь поиграть с другими частями объектов DateTime, как вы предложили. Еще раз спасибо, что нашли время.
Разрешение метки времени составляет 0,1 микросекунды. Не то, что вы можете увидеть из Explorer. Таким образом, вероятность того, что вы получите точное совпадение, настолько мала, что не стоит и пытаться. Вы должны проверить диапазон.