Risposte:
L'esempio seguente mostra come eseguire questa operazione:
DateTime a = new DateTime(2010, 05, 12, 13, 15, 00);
DateTime b = new DateTime(2010, 05, 12, 13, 45, 00);
Console.WriteLine(b.Subtract(a).TotalMinutes);
Quando eseguito, questo stampa "30" poiché esiste una differenza di 30 minuti tra data / ora.
Il risultato di DateTime.Subtract(DateTime x)è un oggetto TimeSpan che fornisce altre proprietà utili.
TotalMinutes! (non Minutes)
Vuoi la TimeSpanstruttura:
TimeSpan diff = dateTime1 - dateTime2;
Un oggetto TimeSpan rappresenta un intervallo di tempo (durata del tempo o tempo trascorso) misurato come numero positivo o negativo di giorni, ore, minuti, secondi e frazioni di secondo. La struttura TimeSpan può anche essere utilizzata per rappresentare l'ora del giorno, ma solo se l'ora non è correlata a una data particolare.
Esistono vari metodi per recuperare giorni, ore, minuti, secondi e millisecondi da questa struttura.
Se sei solo interessato alla differenza, allora:
TimeSpan diff = Math.Abs(dateTime1 - dateTime2);
ti darà la differenza positiva tra i tempi indipendentemente dall'ordine.
Se hai appena ottenuto la componente temporale ma i tempi potrebbero essere divisi entro la mezzanotte, devi aggiungere 24 ore allo span per ottenere la differenza effettiva:
TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
diff = diff + TimeSpan.FromDays(1);
}
SE sono entrambi valori di data e ora UTC che puoi fare TimeSpan diff = dateTime1 - dateTime2;
Altrimenti la tua possibilità di ottenere la risposta corretta in ogni singolo caso possibile è zero.
var startDate = new DateTime(2007, 3, 24);
var endDate = new DateTime(2009, 6, 26);
var dateDiff = endDate.Subtract(startDate);
var date = string.Format("{0} years {1} months {2} days", (int)dateDiff.TotalDays / 365,
(int)(dateDiff.TotalDays % 365) / 30, (int)(dateDiff.TotalDays % 365) / 30);
Console.WriteLine(date);
private void button1_Click(object sender, EventArgs e)
{
TimeSpan timespan;
timespan = dateTimePicker2.Value - dateTimePicker1.Value;
int timeDifference = timespan.Days;
MessageBox.Show(timeDifference.ToString());
}
È possibile utilizzare nel modo seguente per ottenere la differenza tra due oggetti Datetime. Supponiamo che ci siano oggetti DateTime dt1 e dt2, quindi il codice.
TimeSpan diff = dt2.Subtract(dt1);
Console.WriteLine((a - b).ToString(@"hh\:mm\:ss")). Vedi: Formato personalizzato TimeSpan MSDN