Сравнение двух дат в C#

149
18 апреля 2022, 15:00

Мне нужно сравнить две даты(DateTime) и узнать является их разница больше X дней. Я понимаю что тут дело в логике, но я не могу сам написать эту функцию.

Что мне нужно:

  • Функция, проверяющая больше одна дата относительно второй даты на X дней.

Пример кода:

DateTime DT1 = new DateTime(20, 9, 2020);   // 20.09.2020
DateTime DT2 = DateTime.Now;   // Сегодня 01.10.2020
if(Func(DT1, DT2, 30))
   Console.WriteLine("30 дней еще не прошло");
else
   Console.WriteLine("30 прошло");
// ...
static bool Func(DateTime DT1, DateTime2, int interval)   // Две сравниваемые даты, кол-во дней
{
   // Здесь я не смог описать логику
   // return true если разница двух дней меньше interval
}
// Вывод: 30 дней еще не прошло
Answer 1

У структуры DateTime есть перегруженный оператор -, возвращающий TimeSpan:

public static TimeSpan operator -(DateTime a, DateTime b);

Таким образом вы можете получить интервал м-ду 2-мя датами:

if ((DT2 - DT1).Days > 30) // вместо `if (Func(DT1, DT2, 30))`
{ ... }
else
{ ... }

Возможно, вам понадобится перевести TimeSpan в дни. Для этого используется св-во TotalDays типа double, т.е. 2 дня 12 часов превратятся в 2,5 дня. Для обратного преобразования используется статический метод FromDays(double days).

READ ALSO
Как обрезать после 3ей запятой?

Как обрезать после 3ей запятой?

Есть текст - showAcabado(this, 'http:', 'BLACK', '', '')

131
CS0029 при записи элемента в строку C#

CS0029 при записи элемента в строку C#

Когда я присваивал строке(string) элемент из массива символов компилятор пишет ошибку CS0029: Cannot implicitly convert type 'int' to 'string'

212
Как реализуются иммутабельные записи в БД?

Как реализуются иммутабельные записи в БД?

При реализации проекта/схемы БД небольшой/тривиальной бухгалтерской программы возникла следующая проблемаПредставим себе несколько таблиц...

178
Как вывести элементы из Listbox

Как вывести элементы из Listbox

Имеется ComboBox, из которого пользователь выбирает строки, которые после этого отображаются на ListBoxХочу эти выбранные элементы вывести через...

234