akinwunmi Ответов: 3

Как рассчитать месяцы между двумя датетимпикерами в C#


Good day everyone please i want to calculate months differences between two date time picker. And i want it to give me an error if it more than one year. the code here is for if the dates choosen has not expired

What I have tried:

<pre>DateTime reqdt = dtrequest.Value.Date;
DateTime retdt = dtreturn.Value.Date;

TimeSpan ts = retdt - reqdt;
int days = ts.Days;
if (days <= 0)
{
MessageBox.Show("Date Expired");
}
else
{
MessageBox.Show("better");

lbldiff.Text = days.ToString() + "Days";

3 Ответов

Рейтинг:
25

George Swan

//The trick here is to use the AddYears method
DateTime firstDate = DateTime.Now;
DateTime secondDate= firstDate.AddDays(367);
DateTime expiryDate = firstDate.AddYears(1);
string msg = secondDate > expiryDate ? "Expired" : "Not Expired";
Console.WriteLine(msg);


Рейтинг:
2

Patrice T

Цитата:
я хочу рассчитать разницу в месяцах между двумя датами и временем

В основном у вас есть 2 решения:
- Либо вы говорите, что месяц-это примерно 31,5 дня, и используете количество дней для расчета.
- Либо вы делаете расчет самостоятельно, обрабатывая годы, месяцы и дни обеих дат.
это будет выглядеть так:
NbMonths= ( retdt.year - reqdt.year ) * 12 + ( retdt.month - reqdt.month )
if ( retdt.day < reqdt.day ) {
  NbMonths--
}


Рейтинг:
2

BillWoodruff

Если вам нужен более точный расчет, учитывающий интернационализацию (культура/календарь), CodeProject имеет отличную статью/библиотеку кода Яни Джанудиса: [^]. Сейчас он разрабатывается на GitHub и обновляется для .NET Core, Mono, Xamarin и UWP.

Вы можете изучить (сложный) код в классе 'DateDiff, чтобы увидеть, как вычисляется общее количество месяцев.

Еще одна полнофункциональная библиотека C# для вычисления даты и времени-это NodaTime Джона Скита: [^] ... на GitHub: [^]