none
C# somar Além das 00:00 RRS feed

  • Pergunta

  • Galera, é o seguinte: O bicho pegou!!! rsrsrs. Estou a dias procurando a solução para meu problema e nada! Conto com a ajuda de vocês.
    Senário: Estou desenvolvendo uma solução para uma oficina mecânica, nada muito elaborado, mas deve ser funcional, se eu consegui resolver esse pequeno detalhe – Não consigo somar horas que passam das 00:00.
    exemplificando:
    data_da_entrada: 20/09/2012
    data_da_saida: 21/09/2012
    hora_da_entrada: 23:00
    hora_da_saida: 8:00
    Somar data foi mão com açúcar:
    {
    TimeSpan diff = Convert.ToDateTime(DatSaida.Text) - 
    Convert.ToDateTime(DatEntrada.Text);
    txtTD.Text = diff.TotalDays.ToString();
    {
    Mas somar as horas tá me deixando doido!
    Quando somo a entrada –  saida – recebo um resultado tipo: 23:00 – 7:00 = -16:00
    onde deveria ser: 23:00 – 7:00 = 8:00

    DateTime hi = DateTime.Parse(txtHE.Text);
                    DateTime hf = DateTime.Parse(txtHS.Text);
                    TimeSpan resultado;
                         resultado = hf - hi;
    txtTH.Text = resultado.ToString();
    }

    Visual Studio 2010 com C#

    Somebody help me!!!
    sábado, 20 de outubro de 2012 21:32

Respostas

  • Boa noite,

    Mate dois coelhos com uma cajadada só:

                DateTime inicial = new DateTime(2012, 9, 20, 23, 0, 0); //data, hora, minuto e segundos que iniciou o serviço
                DateTime final = new DateTime(2012, 9, 21, 8, 0, 0); //data, hora, minuto e segundos que finalizou o serviço
    
                TimeSpan resultado = final - inicial; //faço a subtração do tempo
    
    
                MessageBox.Show(string.Format("Dias: {0}, Horas: {1}, Minutos: {2}, Segundos: {3}", resultado.Days, resultado.Hours, resultado.Minutes, resultado.Seconds));

    Att

    Evandro


    Não há medalha de ouro sem suor e não há sucesso sem trabalho e dedicação!

    • Sugerido como Resposta Leonardo N. D'Amato segunda-feira, 22 de outubro de 2012 17:39
    • Marcado como Resposta Bartô terça-feira, 23 de outubro de 2012 10:09
    domingo, 21 de outubro de 2012 04:32
  • Boa garoto! tô quase lá.

    Consegui obter o resultado, mas como formato para que apareça assim: 01:30, pois está apareçendo assim: 1:3.

    Exemplo:

    Entrada: 20:17:00

    Sainda: 21:20:00

    Horas_Total: 1:30

    obrigado

    Uso do método ToString() para montar a saída de acordo com suas necessidades:

    //1:30
    TimeSpan t = new TimeSpan(1, 30, 0);
    
    string hora = string.Format("{0}:{1}",((int)t.TotalHours).ToString("00"),t.Minutes.ToString("00"))

    Usei da propriedade "TotalHours" fazendo um cast para int ao invés da propriedade "Hours", pois se o total de horas for maior que 23 ele não retornaria 24 horas, mais sim 0. Pois as horas são vão até 23:59:59......

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta Bartô segunda-feira, 22 de outubro de 2012 16:50
    segunda-feira, 22 de outubro de 2012 15:27
  • Agora sim! Valeu, fico de devendo essa.
    • Marcado como Resposta Bartô terça-feira, 6 de maio de 2014 13:44
    segunda-feira, 22 de outubro de 2012 16:51
  • Agora sim! Valeu, fico de devendo essa.
    Bartô,

    Se possível marque as outras respostas neste thread que te ajudaram, oque eu postei foi apenas um complemento do que o pessoal postou :)

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta Bartô sábado, 24 de novembro de 2012 00:21
    segunda-feira, 22 de outubro de 2012 17:23

Todas as Respostas

  • ola irmão, paz do Senhor Jesus seja contigo;

    olhe uns exemplo: 

    aqui, eAqui também

     Deus abençoe;

    Não seja enganado leia as Escrituras Sagradas...

    sábado, 20 de outubro de 2012 22:08
  • Boa noite,

    Mate dois coelhos com uma cajadada só:

                DateTime inicial = new DateTime(2012, 9, 20, 23, 0, 0); //data, hora, minuto e segundos que iniciou o serviço
                DateTime final = new DateTime(2012, 9, 21, 8, 0, 0); //data, hora, minuto e segundos que finalizou o serviço
    
                TimeSpan resultado = final - inicial; //faço a subtração do tempo
    
    
                MessageBox.Show(string.Format("Dias: {0}, Horas: {1}, Minutos: {2}, Segundos: {3}", resultado.Days, resultado.Hours, resultado.Minutes, resultado.Seconds));

    Att

    Evandro


    Não há medalha de ouro sem suor e não há sucesso sem trabalho e dedicação!

    • Sugerido como Resposta Leonardo N. D'Amato segunda-feira, 22 de outubro de 2012 17:39
    • Marcado como Resposta Bartô terça-feira, 23 de outubro de 2012 10:09
    domingo, 21 de outubro de 2012 04:32
  • Boa garoto! tô quase lá.

    Consegui obter o resultado, mas como formato para que apareça assim: 01:30, pois está apareçendo assim: 1:3.

    Exemplo:

    Entrada: 20:17:00

    Sainda: 21:20:00

    Horas_Total: 1:30

    obrigado

    segunda-feira, 22 de outubro de 2012 14:53
  • Boa garoto! tô quase lá.

    Consegui obter o resultado, mas como formato para que apareça assim: 01:30, pois está apareçendo assim: 1:3.

    Exemplo:

    Entrada: 20:17:00

    Sainda: 21:20:00

    Horas_Total: 1:30

    obrigado

    Uso do método ToString() para montar a saída de acordo com suas necessidades:

    //1:30
    TimeSpan t = new TimeSpan(1, 30, 0);
    
    string hora = string.Format("{0}:{1}",((int)t.TotalHours).ToString("00"),t.Minutes.ToString("00"))

    Usei da propriedade "TotalHours" fazendo um cast para int ao invés da propriedade "Hours", pois se o total de horas for maior que 23 ele não retornaria 24 horas, mais sim 0. Pois as horas são vão até 23:59:59......

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta Bartô segunda-feira, 22 de outubro de 2012 16:50
    segunda-feira, 22 de outubro de 2012 15:27
  • Agora sim! Valeu, fico de devendo essa.
    • Marcado como Resposta Bartô terça-feira, 6 de maio de 2014 13:44
    segunda-feira, 22 de outubro de 2012 16:51
  • Agora sim! Valeu, fico de devendo essa.
    Bartô,

    Se possível marque as outras respostas neste thread que te ajudaram, oque eu postei foi apenas um complemento do que o pessoal postou :)

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta Bartô sábado, 24 de novembro de 2012 00:21
    segunda-feira, 22 de outubro de 2012 17:23