Differenz zwischen zwei Datetime C #?
Frage
Ich brauche eine Funktion, die den Unterschied zwischen den folgenden beiden Daten als 24 zurückkehren kann.
DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
Lösung
Sie können folgendes tun:
TimeSpan duration = b - a;
Es gibt viel in Methoden in der Klasse gebaut Zeitspanne zu tun, was Sie brauchen, d.
duration.TotalSeconds
duration.TotalMinutes
Weitere Informationen finden Sie hier .
Andere Tipps
Versuchen Sie, die folgende
double hours = (b-a).TotalHours;
Wenn Sie nur wollen, um die Stunden Differenz ohne die Differenz in Tagen Sie folgende verwenden können,
int hours = (b-a).Hours;
Der Unterschied zwischen diesen beiden Eigenschaften ist vor allem zu sehen, wenn die Zeitdifferenz mehr als 1 Tag ist. Die Stunden Eigenschaft meldet nur die tatsächliche Stunde Differenz zwischen den beiden Daten. Wenn also zwei Tage, um 100 Jahre unterschied sich aber zugleich in den Tag aufgetreten ist, würde Stunden zurückkehren 0. Aber TotalHours wird die Differenz zwischen der Gesamtmenge von Stunden zurück, die zwischen den beiden Daten (876.000 Stunden in diesem Fall) aufgetreten ist.
Der andere Unterschied ist, dass TotalHours fraktionierte Stunden zurück. Dies kann oder kann nicht sein, was Sie wollen. Wenn nicht, stellen Math.Round kann es nach Ihren Wünschen.
Suchen Sie vielleicht für:
int Difference = (a-b).Hours;
int hours = (int)Math.Round((b - a).TotalHours)
var theDiff24 = (b-a).Hours
Die Zeitdifferenz s / w zu Zeit mit dieser Methode gezeigt werden.
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();
}
}
Verwenden der Feld-IDs
var t1 fängt einen Wert von 04.00
Mit diesem Code überprüfen kann jemand helfen.