Вычислить разницу между двумя датами (количество дней)?

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

Комментарии к вопросу (2)
Решение

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

(EndDate - StartDate).TotalDays
Комментарии (11)

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

DateTime d1;
DateTime d2;
return (d1 - d2).TotalDays;
Комментарии (2)

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

(EndDate.Date - StartDate.Date).Days

Снова предполагая, что StartDate и enddate имеют тип datetime.

Комментарии (5)

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

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

TimeSpan t = d1 - d2;
double NrOfDays = t.TotalDays;
Комментарии (0)
DateTime xmas = new DateTime(2009, 12, 25);
double daysUntilChristmas = xmas.Subtract(DateTime.Today).TotalDays;
Комментарии (3)

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

 (a.Date - b.Date).TotalDays
Комментарии (1)
// 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

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

Комментарии (0)

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

EndDate.Date.Subtract(DateTime.Now.Date).Days
Комментарии (1)

Для новичков вроде меня, которые наткнуться на эту крошечную проблему, в строгом соответствии с образец преобразования инт:

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

Это вычисляет количество дней от Сегодня (Датавремя.UtcNow.Дата) на нужные даты (myDateTime.Дата).

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

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

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

Комментарии (0)

Для A и B два Датавремя типа:

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();
Комментарии (0)

Используя значение типа 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();
Комментарии (0)

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

public void date()
{
    Datetime startdate;
    Datetime enddate;
    Timespan remaindate;

    startdate = DateTime.Parse(txtstartdate.Text).Date;
    enddate = DateTime.Parse(txtenddate.Text).Date;

    remaindate = enddate - startdate;

    if (remaindate != null)
    {
        lblmsg.Text = "you have left with " + remaindate.TotalDays + "days.";
    }
    else
    {
        lblmsg.Text = "correct your code again.";
    }
}

protected void btncal_Click(object sender, EventArgs e)
{
    date();
}

Используйте элемент управления кнопка для вызова выше классом. Вот пример:

Комментарии (0)

Получить разницу между двумя датами, а затем получить из дней:

int total_days = (EndDate - StartDate).TotalDays
Комментарии (2)

Вы можете использовать код ниже:

 int DateDifInSecond = EndDate.Subtract(StartDate).TotalSeconds
Комментарии (0)

protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
    DateTime d = Calendar1.SelectedDate;
    // int a;
    TextBox2.Text = d.ToShortDateString();
    string s = Convert.ToDateTime(TextBox2.Text).ToShortDateString();
    string s1 =  Convert.ToDateTime(Label7.Text).ToShortDateString();
    DateTime dt = Convert.ToDateTime(s).Date;
    DateTime dt1 = Convert.ToDateTime(s1).Date;
    if (dt 
Комментарии (1)