Calcola la differenza tra due date (numero di giorni)?

Vedo che questa domanda è stata risolta per Java , JavaScript e PHP , ma non C #. Quindi, come si può calcolare il numero di giorni tra due date in C #?

Supponendo che StartDate e EndDate siano di tipo DateTime :

 (EndDate - StartDate).TotalDays 

Usa l’object TimeSpan che è il risultato della sottrazione della data:

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

La risposta in alto è corretta, tuttavia se si desidera solo interi giorni come un int e si è felici di rinunciare alla componente del tempo della data, considerare quanto segue:

 (EndDate.Date - StartDate.Date).Days 

Di nuovo, supponendo che StartDate e EndDate siano di tipo DateTime.

Penso che questo farà ciò che vuoi:

 DateTime d1 = DateTime.Now; DateTime d2 = DateTime.Now.AddDays(-1); TimeSpan t = d1 - d2; double NrOfDays = t.TotalDays; 
 DateTime xmas = new DateTime(2009, 12, 25); double daysUntilChristmas = xmas.Subtract(DateTime.Today).TotalDays; 

Nel caso in cui qualcuno desideri numerare interi giorni come doppio ( a , b di tipo DateTime ):

  (a.Date - b.Date).TotalDays 
 // 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 

Puoi anche ottenere la differenza in secondi, millisecondi e zecche.

Puoi provare questo

 EndDate.Date.Subtract(DateTime.Now.Date).Days 

Per i principianti come me che si imbatteranno in questo piccolo problema, in una riga semplice, con la conversione di esempio in int :

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

Questo calcola i giorni totali da oggi (DateTime.UtcNow.Date) a una data desiderata (myDateTime.Date).

Se myDateTime è ieri o data precedente rispetto a oggi, questo darà un risultato intero positivo (+).

Dall’altro lato, se myDateTime è domani o nella data futura, questo darà un risultato intero negativo (-) a causa delle regole di aggiunta.

Buona programmazione! ^ _ ^

Per a e b come due tipi di 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(); 

L’utilizzo di un intervallo di tempo risolverebbe i problemi in quanto ha molti attributi:

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

Prima dichiari una class che tornerà più tardi:

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

Utilizzare un controllo pulsante per chiamare la class sopra. Ecco un esempio:

Puoi usare il codice qui sotto:

  int DateDifInSecond = EndDate.Subtract(StartDate).TotalSeconds 

Ottieni la differenza tra le due date e poi prendi i giorni da:

 int total_days = (EndDate - StartDate).TotalDays 
 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(""); } else { string diff = dt.Subtract(dt1).ToString(); Response.Write(diff); Label18.Text = diff; Session["diff"] = Label18.Text; } }