У меня есть некоторые файлы исключений, которые я хочу удалить через 14 дней или около того. Но как я могу сравнить дату?
На самом деле это выглядит так, но это не работает.
DateTime date = DateTime.Now;
DateTime newDate = date.Subtract(TimeSpan.FromDays(date.Day + 14));
DirectoryInfo exceptionsDirectory = new DirectoryInfo(pathToSave);
foreach (FileInfo actualFile in exceptionsDirectory.GetFiles())
{
if (actualFile.LastWriteTime.Subtract(TimeSpan.FromDays(date.Day + 14)) == newDay)
{
try
{
File.Delete(actualFile.FullName);
}
catch (Exception ex)
{
// do ..
}
}
}
Используйте что-то вроде этого:
DateTime expirydate = DateTime.Now.Subtract(TimeSpan.FromDays(14));
DirectoryInfo exceptionsDirectory = new DirectoryInfo(pathToSave);
foreach (FileInfo actualFile in exceptionsDirectory.GetFiles())
{
if (actualFile.LastWriteTime < expirydate)
{
try
{
File.Delete(actualFile.FullName);
}
catch (Exception ex)
{
// do ..
}
}
}
DateTime
было бы лучше, если бы он использовалDateTime.UtcNow
иactualFile.LastWriteTimeUtc
. В данном случае это не имеет значения, поскольку в вопросе говорилось «14 дней или около того», но в случае, если кто-нибудь возьмет этот код и попытается применить его, скажем, к файлам одного часа, он должен использовать Utc.