Domanda

Ho bisogno di una funzione che può restituire la differenza tra le due date seguenti come 24.

DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
È stato utile?

Soluzione

Puoi fare quanto segue:

TimeSpan duration = b - a;

Esistono molti metodi integrati nella classe timespan per fare ciò di cui hai bisogno, ad esempio

duration.TotalSeconds
duration.TotalMinutes

Ulteriori informazioni sono disponibili qui .

Altri suggerimenti

Prova quanto segue

double hours = (b-a).TotalHours;

Se vuoi solo la differenza oraria escludendo la differenza in giorni puoi usare quanto segue

int hours = (b-a).Hours;

La differenza tra queste due proprietà si osserva principalmente quando la differenza di tempo è superiore a 1 giorno. La proprietà Ore segnalerà solo la differenza oraria effettiva tra le due date. Quindi, se due date differivano di 100 anni ma si sono verificate alla stessa ora del giorno, le ore restituirebbero 0. Ma TotalHours restituirà la differenza tra la quantità totale di ore che si sono verificate tra le due date (876.000 ore in questo caso).

L'altra differenza è che TotalHours restituirà ore frazionarie. Questo può o meno essere quello che vuoi. In caso contrario, Math.Round può adattarlo a proprio piacimento.

Stai forse cercando:

int Difference = (a-b).Hours;
int hours = (int)Math.Round((b - a).TotalHours)
var theDiff24 = (b-a).Hours

La differenza di tempo tra b / n e tempo verrà mostrata usando questo metodo.

 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();
        }
    }

usa l'ID del tuo campo

var t1 acquisisce un valore di 4:00AM

controlla che questo codice possa essere utile a qualcuno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top