web-dev-qa-db-fra.com

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 #?

985
leora

En supposant que StartDate et EndDate sont de type DateTime:

(EndDate - StartDate).TotalDays
1834
Greg Beech

Utilisez l'objet TimeSpan qui est le résultat de la soustraction de la date:

DateTime d1;
DateTime d2;
return (d1 - d2).TotalDays;
133

La réponse principale est correcte, cependant, si vous souhaitez uniquement TOUT le jour en tant qu'int et si vous êtes heureux de renoncer à la composante heure de la date, alors tenez compte des points suivants:

(EndDate.Date - StartDate.Date).Days

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

110
Darren

Je pense que cela fera ce que vous voulez:

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

TimeSpan t = d1 - d2;
double NrOfDays = t.TotalDays;
45
pyrocumulus
DateTime xmas = new DateTime(2009, 12, 25);
double daysUntilChristmas = xmas.Subtract(DateTime.Today).TotalDays;
34
Philip Wallace

Si quelqu'un veut un nombre de jours entiers en tant que double (a, b de type DateTime):

 (a.Date - b.Date).TotalDays
17
kingPuppy
// 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, en millisecondes et en ticks.

14
Vijay Maheriya

Tu peux essayer ça

EndDate.Date.Subtract(DateTime.Now.Date).Days
8
Rohidas Kadam

Pour les débutants comme moi, ce problème minime tombera dans une ligne simple, avec un exemple de conversion en int:

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

Ceci calcule le nombre total de jours à compter d’aujourd’hui (DateTime.UtcNow.Date) et la date souhaitée (myDateTime.Date).

Si myDateTime est hier ou une date antérieure à celle d'aujourd'hui, cela donnera un résultat entier positif (+).

D'un autre côté, si myDateTime est demain ou à la date future, cela donnera un résultat entier négatif (-) en raison de règles d'addition.

Bon codage! ^ _ ^

4
Curbside Coder

Utiliser un intervalle de temps résoudrait les problèmes car il possède 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();
3
Vijay Vj

Pour a et b sous la forme de deux types 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();
3
Pratyush Dhanuka

Obtenez la différence entre les deux dates, puis les jours suivants:

int total_days = (EndDate - StartDate).TotalDays
0
Muhamad Eissa

Commencez par déclarer 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 de contrôle pour appeler la classe ci-dessus. Voici un exemple:

0
Muba

Vous pouvez utiliser le code ci-dessous:

 int DateDifInSecond = EndDate.Subtract(StartDate).TotalSeconds
0
Code_Worm