1
У меня есть файлы исключений, которые я хочу удалить через 14 дней или около того. Но как я могу сравнить дату?Сравнение Datetime
На самом деле это выглядит так, но это не работает.
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' связанных ответов это было бы лучше, если бы он использовал' 'DateTime.UtcNow' и actualFile.LastWriteTimeUtc'. В этом случае не имеет значения, так как вопрос сказал «14 дней или около того», но если кто-то возьмет этот код и попытается применить его, скажем, к часовым старым файлам, они должны использовать Utc. –
@IanMercer, это не всегда хорошая идея. Во многих ситуациях вы ДОЛЖНЫ полагаться на местные, а не на время UTC. – rufanov
Я не говорил «всегда», я сказал «больше всего». Например: почти каждое многопользовательское приложение, работающее на сервере (WWW, WCF, WebApi, ...), не используется для 'DateTime.Now'. Всякий раз, когда вам нужно рассчитать разницу в два раза, вам нужно использовать Utc. и т. д. И даже если вам нужно работать с местным временем, вам лучше использовать 'DateTimeOffset', а не' DateTime', потому что он фиксирует как Utc, так и текущее смещение. –