Potrzebuję funkcji, która może zwrócić różnicę między dwiema poniższymi datami jako 24.
DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
Odpowiedzi:
Możesz wykonać następujące czynności:
TimeSpan duration = b - a;
W klasie timespan jest wiele wbudowanych metod, które pozwalają robić to, czego potrzebujesz, np
duration.TotalSeconds
duration.TotalMinutes
Więcej informacji można znaleźć tutaj .
Spróbuj wykonać następujące czynności
double hours = (b-a).TotalHours;
Jeśli chcesz tylko poznać różnicę godzin, z wyłączeniem różnicy w dniach, możesz użyć poniższego
int hours = (b-a).Hours;
Różnica między tymi dwoma właściwościami jest widoczna głównie wtedy, gdy różnica czasu jest większa niż 1 dzień. Właściwość Hours będzie raportować tylko rzeczywistą różnicę godzin między dwiema datami. Jeśli więc dwie daty różniły się o 100 lat, ale wystąpiły o tej samej porze dnia, godziny zwróciłyby 0. Ale TotalHours zwróci różnicę między całkowitą liczbą godzin, które wystąpiły między dwiema datami (w tym przypadku 876 000 godzin).
Inną różnicą jest to, że TotalHours zwraca ułamkowe godziny. To może być to, czego chcesz, ale nie musi. Jeśli nie, Math.Round może dostosować to do twoich potrzeb.
Szukasz może:
int Difference = (a-b).Hours;
Przy użyciu tej metody zostanie pokazana różnica czasu w stosunku do czasu.
private void HoursCalculator()
{
var t1 = txtfromtime.Text.Trim();
var t2 = txttotime.Text.Trim();
var Fromtime = t1.Substring(6);
var Totime = t2.Substring(6);
if (Fromtime == "M")
{
Fromtime = t1.Substring(5);
}
if (Totime == "M")
{
Totime = t2.Substring(5);
}
if (Fromtime=="PM" && Totime=="AM" )
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-02 " + txttotime.Text.Trim());
var t = dt1.Subtract(dt2);
//int temp = Convert.ToInt32(t.Hours);
//temp = temp / 2;
lblHours.Text =t.Hours.ToString() + ":" + t.Minutes.ToString();
}
else if (Fromtime == "AM" && Totime == "PM")
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
TimeSpan t = (dt2.Subtract(dt1));
lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
}
else
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
TimeSpan t = (dt2.Subtract(dt1));
lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
}
}
użyj swoich identyfikatorów pola
var t1 przechwytuje wartość 4:00 rano
sprawdź ten kod może być pomocny dla kogoś.