Разница между двумя датами
Я пробовал много способов рассчитать круглое число дней между двумя датами, я имею в виду, считая целые дни. Пример того, что мне нужно:
START DATE END DATE Day Count
24/02/2010 16:26 24/02/2010 16:26 1
20/02/2010 18:16 24/02/2010 16:26 5
31/12/2009 20:00 24/02/2010 16:26 56
15/07/2009 20:59 24/02/2010 16:26 225
Ответы
Ответ 1
DateTime можно вычесть, чтобы получить TimeSpan. TimeSpan имеет TotalDays, который представляет собой количество дней (включая дробные дни).
int DaysBetween(DateTime d1, DateTime d2) {
TimeSpan span = d2.Subtract(d1);
return (int)span.TotalDays;
}
ПРИМЕЧАНИЕ Задержки времени подписаны. Если d1 = 1/9/11 и d2 = 1/11/11, то d1.subtract(d2) = timespan -2 дня. Поэтому, если вы хотите использовать временной интервал, чтобы узнать, соответствуют ли даты в течение X дней друг от друга, вам необходимо принять абсолютное значение общих дней...
Math.Abs(span.TotalDays)
Ответ 2
Вы можете использовать оператор вычитания в двух экземплярах DateTime
(или DateTimeOffset
, так как он имеет тот же вычитания, и рекомендуемая структура для использования для значений даты в .NET), чтобы получить TimeSpan
.
После этого вы можете вызвать Days
свойство, чтобы получить число целых дней, которое представляет TimeSpan
.
Если вы хотите количество целых и дробных дней, просмотрите свойство TotalDays
.
В вашем конкретном случае кажется, что вы хотите добавить 1 к любому значению, возвращаемому свойством Days
, так как ваш пользовательский расчет указывает, что для двух экземпляров DateTime
, которые представляют одно и то же значение, результат равен 1.
Ответ 3
DateTime dtOne;
DateTime dtTwo;
// to get the total days in between
int answer = (dtTwo - dtOne).TotalDays