Сравнить дату и время

1

У меня есть некоторые файлы исключений, которые я хочу удалить через 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
date

1 ответ

3
Лучший ответ

Используйте что-то вроде этого:

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 ..
        }
    }
}  
  • 2
    Как и в случае большинства ответов, связанных с DateTime было бы лучше, если бы он использовал DateTime.UtcNow и actualFile.LastWriteTimeUtc . В данном случае это не имеет значения, поскольку в вопросе говорилось «14 дней или около того», но в случае, если кто-нибудь возьмет этот код и попытается применить его, скажем, к файлам одного часа, он должен использовать Utc.
  • 0
    @IanMercer, это не всегда хорошая идея. Во многих ситуациях вы ДОЛЖНЫ полагаться на местное, а не на время UTC.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню