Calculer la différence entre deux dates (nombre de jours)?

je vois que cette question a été répondue pour Java , JavaScript , et PHP , mais pas C#. Alors, comment peut-on calculer le nombre de jours entre deux dates en C#?

850
demandé sur Community 2009-10-22 17:47:15

15 réponses

, en supposant que StartDate et EndDate soient du type DateTime :

(EndDate - StartDate).TotalDays
1593
répondu Greg Beech 2014-09-30 13:39:49

Utilisation objet TimeSpan qui est le résultat de la date de la soustraction:

DateTime d1;
DateTime d2;
return (d1 - d2).TotalDays;
116
répondu Vitaliy Liptchinsky 2009-10-22 13:49:00

la réponse supérieure est correcte, cependant si vous souhaitez seulement des journées entières comme un int et êtes heureux de renoncer à la composante de temps de la date alors considérer:

(EndDate.Date - StartDate.Date).Days

encore une fois en supposant que StartDate et EndDate sont de type DateTime.

74
répondu Darren 2017-11-26 00:18:49

je pense que cela va faire ce que vous voulez:

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

TimeSpan t = d1 - d2;
double NrOfDays = t.TotalDays;
42
répondu pyrocumulus 2009-10-22 13:49:47
DateTime xmas = new DateTime(2009, 12, 25);
double daysUntilChristmas = xmas.Subtract(DateTime.Today).TotalDays;
32
répondu Philip Wallace 2013-11-03 09:22:25

dans le cas où quelqu'un veut numer de jours entiers comme un double ( a , b de type DateTime ):

 (a.Date - b.Date).TotalDays
15
répondu kingPuppy 2014-06-13 14:41:10
// 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

vous pouvez également obtenir la différence en secondes, millisecondes et tiques.

9
répondu Vijay Maheriya 2017-11-26 00:17:52

vous pouvez essayer ceci

EndDate.Date.Subtract(DateTime.Now.Date).Days
7
répondu Rohidas Kadam 2015-06-11 06:18:20

pour a et b comme deux DateTime types:

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();
2
répondu Pratyush Dhanuka 2017-04-01 08:05:17

pour les débutants comme moi qui tombera sur ce petit problème, dans une ligne simple, avec conversion d'échantillon en int :

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

cela calcule le nombre total de jours à partir d'aujourd'hui (DateTime.UtcNow.Date) à une date désirée (myDateTime.Date.)

si myDateTime est hier, ou date plus ancienne qu'aujourd'hui, cela donnera un résultat (+) entier positif.

de l'autre côté, si le myDateTime est demain ou à une date ultérieure, Cela donnera un résultat négatif (-) entier dû aux règles d'addition.

bon codage! ^_^

2
répondu LoudSpeaker 2017-11-26 00:15:50

utiliser un intervalle de temps résoudrait les problèmes car il a de nombreux attributs:

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();
1
répondu Vijay Vj 2017-11-26 00:16:29

déclarez D'abord une classe qui reviendra plus tard:

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

utilisez un bouton pour appeler la classe ci-dessus. Voici un exemple:

0
répondu Muba 2017-04-01 08:06:30

vous pouvez utiliser le code ci-dessous:

 int DateDifInSecond = EndDate.Subtract(StartDate).TotalSeconds
0
répondu Code_Worm 2017-04-01 08:08:27

obtenir la différence entre les deux dates et puis obtenir les jours de:

int total_days = (EndDate - StartDate).TotalDays
0
répondu Muhamad Eissa 2017-04-01 08:08:47
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;
    }
}   
-19
répondu sangeetha 2014-04-20 17:27:25