Pregunta

Necesito una función que pueda devolver la diferencia entre las dos fechas siguientes como 24.

DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
¿Fue útil?

Solución

Puede hacer lo siguiente:

TimeSpan duration = b - a;

Hay muchos métodos integrados en la clase de intervalo de tiempo para hacer lo que necesita, es decir,

duration.TotalSeconds
duration.TotalMinutes

Se puede encontrar más información aquí .

Otros consejos

Pruebe lo siguiente

double hours = (b-a).TotalHours;

Si solo desea la diferencia horaria excluyendo la diferencia en días, puede usar lo siguiente

int hours = (b-a).Hours;

La diferencia entre estas dos propiedades se ve principalmente cuando la diferencia horaria es más de 1 día. La propiedad Horas solo informará la diferencia horaria real entre las dos fechas. Entonces, si dos fechas diferían en 100 años pero ocurrían a la misma hora en el día, las horas devolverían 0. Pero TotalHours devolverá la diferencia entre la cantidad total de horas que ocurrieron entre las dos fechas (876,000 horas en este caso).

La otra diferencia es que TotalHours devolverá horas fraccionarias. Esto puede o no ser lo que quieres. Si no, Math.Round puede ajustarlo a su gusto.

¿Quizás estás buscando:

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

La diferencia horaria b / w respecto al tiempo se mostrará utilizando este método.

 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 tu ID de campo

var t1 captura un valor de 4:00AM

compruebe que este código puede ser útil para alguien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top