Pergunta

Eu preciso de uma função que pode retornar a diferença entre o abaixo duas datas como 24.

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

Solução

Você pode fazer o seguinte:

TimeSpan duration = b - a;

Há muita construído em métodos na classe timespan para fazer o que você precisa, ou seja.

duration.TotalSeconds
duration.TotalMinutes

Mais informação pode ser encontrada aqui .

Outras dicas

Tente o seguinte

double hours = (b-a).TotalHours;

Se você quiser apenas a diferença hora excluindo a diferença em dias você pode usar o seguinte

int hours = (b-a).Hours;

A diferença entre estas duas propriedades é visto principalmente quando a diferença de tempo é mais do que 1 dia. A propriedade Horas só irá relatar a diferença real hora entre as duas datas. Portanto, se duas datas diferem por 100 anos, mas ocorreu ao mesmo tempo no dia, horas voltaria 0. Mas totalhours voltará a diferença entre, no valor total de horas que ocorreu entre as duas datas (876.000 horas, neste caso).

A outra diferença é que totalhours retornará horas fracionários. Isto pode ou não ser o que quiser. Se não, Math.Round pode ajustá-lo ao seu gosto.

Você talvez procurando:

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

O tempo de diferença b / w de tempo será mostrado utilização deste 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();
        }
    }

usar do seu campo id

var t1 capturas de um valor de 04h00

verificar este código pode ser útil para alguém.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top