Рассчитать разницу между двумя датами (количество дней)? - PullRequest
959 голосов
/ 22 октября 2009

Я вижу, что на этот вопрос ответили Java , JavaScript и PHP , но не C #. Итак, как можно рассчитать количество дней между двумя датами в C #?

Ответы [ 15 ]

1794 голосов
/ 22 октября 2009

Предполагая, что StartDate и EndDate имеют тип DateTime:

(EndDate - StartDate).TotalDays
129 голосов
/ 22 октября 2009

Использовать объект TimeSpan, который является результатом вычитания даты:

DateTime d1;
DateTime d2;
return (d1 - d2).TotalDays;
102 голосов
/ 27 августа 2015

Верхний ответ верен, однако, если вы хотите, чтобы только целые дни были целыми числами, и были бы рады отказаться от компонента времени даты, то подумайте:

(EndDate.Date - StartDate.Date).Days

Снова при условии, что StartDate и EndDate имеют тип DateTime.

43 голосов
/ 22 октября 2009

Я думаю, что это будет делать то, что вы хотите:

DateTime d1 = DateTime.Now;
DateTime d2 = DateTime.Now.AddDays(-1);

TimeSpan t = d1 - d2;
double NrOfDays = t.TotalDays;
34 голосов
/ 22 октября 2009
DateTime xmas = new DateTime(2009, 12, 25);
double daysUntilChristmas = xmas.Subtract(DateTime.Today).TotalDays;
17 голосов
/ 13 июня 2014

Если кто-то хочет, чтобы число целых дней было двойным (a, b типа DateTime):

 (a.Date - b.Date).TotalDays
13 голосов
/ 17 ноября 2016
// Difference in days, hours, and minutes.

TimeSpan ts = EndDate - StartDate;

// Difference in days.

int differenceInDays = ts.Days; // This is in int
double differenceInDays= ts.TotalDays; // This is in double

// Difference in Hours.
int differenceInHours = ts.Hours; // This is in int
double differenceInHours= ts.TotalHours; // This is in double

// Difference in Minutes.
int differenceInMinutes = ts.Minutes; // This is in int
double differenceInMinutes= ts.TotalMinutes; // This is in double

Вы также можете получить разницу в секундах, миллисекундах и тиках.

8 голосов
/ 11 июня 2015

Вы можете попробовать это

EndDate.Date.Subtract(DateTime.Now.Date).Days
4 голосов
/ 02 августа 2017

Для начинающих, таких как я, которые натолкнутся на эту крошечную проблему, в простой строке, с примером преобразования в int :

int totalDays = Convert.ToInt32((DateTime.UtcNow.Date - myDateTime.Date).TotalDays);

Это вычисляет общее количество дней с сегодняшнего дня (DateTime.UtcNow.Date) до желаемой даты (myDateTime.Date).

Если myDateTime вчера или более старая дата, чем сегодня, это даст положительный (+) целочисленный результат.

С другой стороны, если myDateTime будет завтра или в будущем, это даст отрицательный (-) целочисленный результат из-за правил добавления.

Удачного кодирования! ^ _ ^

3 голосов
/ 10 июля 2014

Для a и b как два DateTime типа:

DateTime d = DateTime.Now;
DateTime c = DateTime.Now;
c = d.AddDays(145);
string cc;
Console.WriteLine(d);
Console.WriteLine(c);
var t = (c - d).Days;
Console.WriteLine(t);
cc = Console.ReadLine();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...