rusqhyazeubebgcahrcsdanlenetfifrglkadeelhuisgaitkkkylvltmknoplptrosrskslessvtrukuz

С# - между двумя датами (количество дней)

Больше
7 мес. 4 дн. назад #152 от О.Коровяков
Предполагая, что StartDate и EndDate имеют тип DateTime:
(EndDate - StartDate).TotalDays

Использовать объект TimeSpan, который является результатом вычитания даты:
DateTime d1;
DateTime d2;
return (d1 - d2).TotalDays;

Я думаю, что это сделает то, что вы хотите:
DateTime d1 = DateTime.Now;
DateTime d2 = DateTime.Now.AddDays(-1);
 
TimeSpan t = d1 - d2;
double NrOfDays = t.TotalDays;

Верхний ответ правильный, однако, если вы хотите, чтобы только WHOLE days были int и с удовольствием отказались от компонента времени в дате, подумайте:
(EndDate.Date - StartDate.Date).Days
Опять же, если StartDate и EndDate имеют тип DateTime.
потому что «число дней» обычно означает целые дни. Стоит отметить, что Days не останавливается на 365 (как и другие свойства, такие как Hours , Minutes , Second значение nax, где начинается следующее более высокое свойство). Это так же, как TotalDays но без дробей дня и возвращает int вместо double .

--
Вы можете попробовать это
EndDate.Date.Subtract(DateTime.Now.Date).Days

Вы также можете получить разницу в секундах, миллисекундах и тиках.
// 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

----

с преобразованием образца в int:
int totalDays = Convert.ToInt32((DateTime.UtcNow.Date - myDateTime.Date).TotalDays);
Это вычисляет общие дни с сегодняшнего дня (DateTime.UtcNow.Date) до нужной даты (myDateTime.Date).
Если myDateTime вчера или старше, чем сегодня, это даст положительный результат (+).
С другой стороны, если myDateTime будет завтра или в будущей дате, это даст отрицательный (-) целочисленный результат из-за правил добавления.

Использование timespan решит проблемы, поскольку у него много атрибутов:
DateTime strt_date = DateTime.Now;
DateTime end_date = Convert.ToDateTime("10/1/2017 23:59:59");
//DateTime add_days = end_date.AddDays(1);
TimeSpan nod = (end_date - strt_date);
Console.WriteLine(strt_date + "" + end_date + "" + "" + nod.TotalHours + "");
Console.ReadKey();

Вы можете использовать следующий код:
int DateDifInSecond = EndDate.Subtract(StartDate).TotalSeconds

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подпишитесь на наши новости...

Если вам интересны материалы опубликованных на Нашем сайте, Вы можете подписаться на рассылку информационных бюллетеней о новых публикациях ... Просто введите адрес электронной почты на какую Вы хотите получать Новости и нажмите кнопку "Подписаться"

Контакт Инфо

Ok-Wood.
08304 ул.Салютная,c.Гнедын,
Киевская обл, Украина
  • Тел: +39 067 492 41 24
    Tel: +38 095 095 88 60
  • Email: info@ok-wood.com.ua
  • Web: ok-wood.com.ua

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