С# сравнить два DateTimes

У меня две даты:

DateTime date_of_submission = Convert.ToDateTime(DateTime.Now.ToString("MM/dd/yyyy"));
DateTime _effective_date = Convert.ToDateTime(TextBox32.Text);

Теперь действительная дата не может быть более 90 дней в будущем с даты подачи.

Как это сделать?

Один из способов, который приходит на ум, - наивное преобразование даты даты в строки, а затем сравнение dd, mm, yyyy и просмотр, если обе даты находятся в пределах 90 дней друг от друга. Но я считаю, что должно быть лучшее решение, чем это.

Ответ 1

Вы можете вычесть две даты и получить TimeSpan:

TimeSpan difference = _effective_date - date_of_submission;
if(difference.TotalDays > 90)
{
  // Bingo!
}

Ответ 2

var days = (_effective_date - date_of_submission).Days;

Ответ 3

Что-то вроде...

        TimeSpan difference = _effective_date - date_of_submission;
        double days = difference.TotalDays;

        if (days > 0 && days <= 90)
        {
            //valid
        }

Ответ 4

Вы можете сравнить два значения datetime друг с другом, как вы обычно сравниваете.

Итак, вы можете сделать следующее: -

if(date_of_effective_date.CompareTo(date_of_submission_date.AddDays(90)) <= 0)
{
 //Correct
}

Ответ 5

Это образец для сравнения даты и времени. вы можете изменить в соответствии с вашим требованием

 DateTime dtFromDate = DateTime.ParseExact(TextBoxFromDate.Text, "dd/MM/yyyy",
                                                   CultureInfo.InvariantCulture);
 DateTime dtToDate = DateTime.ParseExact(TextBoxToDate.Text, "dd/MM/yyyy",
                                                   CultureInfo.InvariantCulture);
 TimeSpan difference = dtFromDate - dtToDate;
 double days = difference.TotalDays;

 if (days > 0)
 {
   DivFormError.InnerText = ""From Date" cannot be greater than "To Date"";
 }

Ответ 6

Хотя есть несколько эффективных решений, это может быть одно для будущих поисковиков

DateTime date_of_submission = Convert.ToDateTime(DateTime.Now.ToString("MM/dd/yyyy"));
DateTime _effective_date = Convert.ToDateTime(TextBox32.Text);

DateTime lastPossibleEffectiveDate = _effective_date.AddDays(90);

int result = DateTime.Compare(_effective_date,lastPossibleEffectiveDate);
if (result <= 0)
    Console.WriteLine("Valid Date");
else if (result > 0 )
    Console.WriteLine("Not Valid effective date");