Odpowiedzi:
Poniższy przykład ilustruje, jak to zrobić:
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);
Po wykonaniu wypisuje "30", ponieważ istnieje 30-minutowa różnica między datą / godziną.
Wynikiem DateTime.Subtract(DateTime x)
jest obiekt TimeSpan, który daje inne przydatne właściwości.
TotalMinutes
! (nie Minutes
)
Chcesz TimeSpan
struktury:
TimeSpan diff = dateTime1 - dateTime2;
Obiekt TimeSpan reprezentuje przedział czasu (czas trwania lub czas, który upłynął), który jest mierzony jako dodatnia lub ujemna liczba dni, godzin, minut, sekund i ułamków sekundy. Struktury TimeSpan można również użyć do reprezentowania pory dnia, ale tylko wtedy, gdy czas nie jest powiązany z określoną datą.
Istnieją różne metody odzyskiwania dni, godzin, minut, sekund i milisekund z tej struktury.
Jeśli interesuje Cię tylko różnica, to:
TimeSpan diff = Math.Abs(dateTime1 - dateTime2);
da ci dodatnią różnicę między czasami niezależnie od zamówienia.
Jeśli masz właśnie składnik czasu, ale czasy mogą być podzielone o północy, musisz dodać 24 godziny do zakresu, aby uzyskać rzeczywistą różnicę:
TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
diff = diff + TimeSpan.FromDays(1);
}
JEŚLI obie są wartościami daty i czasu UTC, które możesz zrobić TimeSpan diff = dateTime1 - dateTime2;
W przeciwnym razie szansa na uzyskanie poprawnej odpowiedzi w każdym możliwym przypadku wynosi 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());
}
Możesz użyć w następujący sposób, aby uzyskać różnicę między dwoma obiektami daty i godziny. Załóżmy, że istnieją obiekty DateTime dt1 i dt2, a następnie kod.
TimeSpan diff = dt2.Subtract(dt1);
Console.WriteLine((a - b).ToString(@"hh\:mm\:ss"))
. Zobacz: Niestandardowy format MSDN TimeSpan