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

c# date

1076765 просмотра

15 ответа

47107 Репутация автора

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

Автор: leora Источник Размещён: 22.10.2009 01:47

Ответы (15)


1877 плюса

106919 Репутация автора

Решение

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

(EndDate - StartDate).TotalDays
Автор: Greg Beech Размещён: 22.10.2009 01:48

136 плюса

4575 Репутация автора

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

DateTime d1;
DateTime d2;
return (d1 - d2).TotalDays;
Автор: Vitaliy Liptchinsky Размещён: 22.10.2009 01:49

46 плюса

7568 Репутация автора

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

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

TimeSpan t = d1 - d2;
double NrOfDays = t.TotalDays;
Автор: pyrocumulus Размещён: 22.10.2009 01:49

34 плюса

6973 Репутация автора

DateTime xmas = new DateTime(2009, 12, 25);
double daysUntilChristmas = xmas.Subtract(DateTime.Today).TotalDays;
Автор: Philip Wallace Размещён: 22.10.2009 01:49

-20 плюса

1 Репутация автора

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 <= dt1)
    {
        Response.Write("<script>alert(' Not a valid Date to extend warranty')</script>");
    }
    else
    {
        string diff = dt.Subtract(dt1).ToString();
        Response.Write(diff);
        Label18.Text = diff;
        Session["diff"] = Label18.Text;
    }
}   
Автор: sangeetha Размещён: 20.04.2014 05:00

18 плюса

1787 Репутация автора

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

 (a.Date - b.Date).TotalDays
Автор: kingPuppy Размещён: 13.06.2014 02:41

3 плюса

501 Репутация автора

Для 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();
Автор: Pratyush Dhanuka Размещён: 10.07.2014 07:16

0 плюса

17 Репутация автора

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

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();
}

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

Автор: Muba Размещён: 08.01.2015 12:59

8 плюса

303 Репутация автора

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

EndDate.Date.Subtract(DateTime.Now.Date).Days
Автор: Rohidas Kadam Размещён: 11.06.2015 06:18

123 плюса

5140 Репутация автора

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

(EndDate.Date - StartDate.Date).Days

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

Автор: Darren Размещён: 27.08.2015 03:33

0 плюса

41 Репутация автора

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

int total_days = (EndDate - StartDate).TotalDays
Автор: Muhamad Eissa Размещён: 29.08.2016 05:25

16 плюса

1204 Репутация автора

// 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

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

Автор: Vijay Maheriya Размещён: 17.11.2016 06:30

0 плюса

1264 Репутация автора

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

 int DateDifInSecond = EndDate.Subtract(StartDate).TotalSeconds
Автор: Code_Worm Размещён: 01.01.2017 09:02

3 плюса

117 Репутация автора

Использование временного интервала решило бы проблемы, поскольку оно имеет много атрибутов:

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();
Автор: Vijay Vj Размещён: 01.06.2017 04:31

4 плюса

170 Репутация автора

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

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

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

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

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

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

Автор: Curbside Coder Размещён: 01.08.2017 09:36
Вопросы из категории :
32x32