Antworten:
Das folgende Beispiel zeigt, wie das geht:
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);
Bei der Ausführung wird "30" ausgegeben, da zwischen Datum und Uhrzeit ein Unterschied von 30 Minuten besteht.
Das Ergebnis von DateTime.Subtract(DateTime x)
ist ein TimeSpan-Objekt, das andere nützliche Eigenschaften bietet.
TotalMinutes
! (nicht Minutes
)
Sie wollen die TimeSpan
Struktur:
TimeSpan diff = dateTime1 - dateTime2;
Ein TimeSpan-Objekt stellt ein Zeitintervall (Zeitdauer oder verstrichene Zeit) dar, das als positive oder negative Anzahl von Tagen, Stunden, Minuten, Sekunden und Bruchteilen einer Sekunde gemessen wird. Die TimeSpan-Struktur kann auch zur Darstellung der Uhrzeit verwendet werden, jedoch nur, wenn die Uhrzeit nicht mit einem bestimmten Datum zusammenhängt.
Es gibt verschiedene Methoden, um die Tage, Stunden, Minuten, Sekunden und Millisekunden von dieser Struktur zurückzugewinnen.
Wenn Sie nur an dem Unterschied interessiert sind, dann:
TimeSpan diff = Math.Abs(dateTime1 - dateTime2);
gibt Ihnen den positiven Unterschied zwischen den Zeiten unabhängig von der Reihenfolge.
Wenn Sie gerade die Zeitkomponente erhalten haben, die Zeiten jedoch bis Mitternacht aufgeteilt werden können, müssen Sie die Zeitspanne um 24 Stunden verlängern, um die tatsächliche Differenz zu erhalten:
TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
diff = diff + TimeSpan.FromDays(1);
}
Sie müssen lediglich die Subtract-Methode der DateTime- Klassen verwenden, die einen TimeSpan zurückgibt .
var dateOne = DateTime.Now;
var dateTwo = DateTime.Now.AddMinutes(-5);
var diff = dateTwo.Subtract(dateOne);
var res = String.Format("{0}:{1}:{2}", diff.Hours,diff.Minutes,diff.Seconds));
Die Art und Weise, wie ich es normalerweise mache, ist das Subtrahieren der beiden DateTime und dies bringt mir eine Zeitspanne, die mir den Unterschied sagt.
Hier ist ein Beispiel:
DateTime start = DateTime.Now;
// Do some work
TimeSpan timeDiff = DateTime.Now - start;
timeDiff.TotalMilliseconds;
WENN beide UTC-Datums- / Uhrzeitwerte sind, können Sie dies tun TimeSpan diff = dateTime1 - dateTime2;
Andernfalls ist Ihre Chance, in jedem möglichen Fall die richtige Antwort zu erhalten, Null.
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);
Sie müssen einen TimeSpan verwenden . Hier ist ein Beispielcode:
TimeSpan sincelast = TimeSpan.FromTicks(DateTime.Now.Ticks - LastUpdate.Ticks);
TimeSpan sincelast = DateTime.Now - LastUpdate;
private void button1_Click(object sender, EventArgs e)
{
TimeSpan timespan;
timespan = dateTimePicker2.Value - dateTimePicker1.Value;
int timeDifference = timespan.Days;
MessageBox.Show(timeDifference.ToString());
}
Sie können auf folgende Weise verwenden, um einen Unterschied zwischen zwei Datetime-Objekten zu erzielen. Angenommen, es gibt DateTime-Objekte dt1 und dt2, dann den Code.
TimeSpan diff = dt2.Subtract(dt1);
Console.WriteLine((a - b).ToString(@"hh\:mm\:ss"))
. Siehe: MSDN Custom TimeSpan Format