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);
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top