Сравните File.GetCreationTime с датой и временем

avatar
GracefulJoe
8 апреля 2018 в 08:23
104
0
0

Я новичок в 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");
 }

Я знаю, что делаю это совершенно неправильно. Есть ли лучший способ сравнить время создания файла с определенной датой/временем. заранее спасибо.

Источник
pinkfloydx33
8 апреля 2018 в 08:59
0

Вы можете использовать Equals, но учтите, что они, скорее всего, никогда точно не совпадут, поскольку объект DateTime хранит информацию с точностью до тика (1 десятимиллионная доля секунды), а дата вашего файла должна быть равна 0 мс, 0ns точно соответствовать. Вам, вероятно, придется тестировать каждый компонент даты отдельно... fileDate.Date==comparedate.Date && fileDate.Hour == comparedate.Hour && и т.д..

pinkfloydx33
8 апреля 2018 в 09:04
0

Также CompareTo возвращает три класса значений. 0, положительный и отрицательный. Чтобы проверить совпадение с помощью CompareTo, вы должны сравнить результат с нулем. if (File.GetCreationTime("test.txt").CompareTo(comparedate) == 0) { /* equal */ }, но, как говорится в моем комментарии выше, это будет сравниваться с отметкой, поэтому точное совпадение в вашем сценарии маловероятно.

GracefulJoe
8 апреля 2018 в 09:54
0

Спасибо чувак! очень признателен, это сделало трюк! теперь у меня есть лучшее понимание, я попытаюсь поиграть с другими частями объектов DateTime, как вы предложили. Еще раз спасибо, что нашли время.

Hans Passant
8 апреля 2018 в 10:13
1

Разрешение метки времени составляет 0,1 микросекунды. Не то, что вы можете увидеть из Explorer. Таким образом, вероятность того, что вы получите точное совпадение, настолько мала, что не стоит и пытаться. Вы должны проверить диапазон.

Ответы (0)