none
Problema com Calculo de campo de Horas RRS feed

  • Pergunta

  • Bom dia!
    
      Tenho um window form com 2 maskedtextboxes formatados para aceitar somente 
    horas.
      Alguem poderia me ajudar no sentido de como eu faço para retornar o valor 
    em horas e minutos do intervalo?
    Ou seja:
    msk1 = "08:00"
    msk2 = "11:45"
    resultado: "3 hs e 45min"
    
    Muito Obrigado desde já
    sexta-feira, 14 de setembro de 2007 12:22

Respostas

  • Eu tenho essa rotina

    Public Function CalculaTempo(ByVal dtInicio As Date, ByVal hrInicio As String, ByVal hrFinal As String) As String

    Dim totSegInicio As Long

    Dim totSegFim As Long

    Dim totSegGuarda As Long

    Dim Hr As Long

    Dim hh As Long, mm As Long, ss As Long

    If dtInicio.Date <> Now.Date Then 'É quando o processo fica de um dia para o outro muda a data

    totSegInicio = CLng(Mid(hrInicio, 1, 2)) * 3600

    totSegInicio += CLng(Mid(hrInicio, 4, 2)) * 60

    totSegInicio += CLng(Mid(hrInicio, 7, 2))

    totSegGuarda = 86399 - totSegInicio

    hrInicio = "00:00:01"

    Else

    totSegGuarda = 0

    End If

    totSegInicio = CLng(Mid(hrInicio, 1, 2)) * 3600

    totSegInicio += CLng(Mid(hrInicio, 4, 2)) * 60

    totSegInicio += CLng(Mid(hrInicio, 7, 2))

    totSegFim = CLng(Mid(hrFinal, 1, 2)) * 3600

    totSegFim += CLng(Mid(hrFinal, 4, 2)) * 60

    totSegFim += CLng(Mid(hrFinal, 7, 2))

    Hr = Abs((totSegFim - totSegInicio)) + totSegGuarda

    hh = Hr \ 3600

    ss = Hr Mod 3600

    mm = ss \ 60

    ss = ss Mod 60

    CalculaTempo = Format(hh, "00") + ":" + Format(mm, "00") + ":" + Format(ss, "00")

    End Function

     

    sexta-feira, 14 de setembro de 2007 12:33
  • Olá, veja este exemplo em C#

     

    Code Snippet

    private void button1_Click(object sender, EventArgs e)

    {

    TimeSpan HoraFinal = TimeSpan.Parse(mskDataFinal.Text);

    TimeSpan HoraInicial = TimeSpan.Parse(mskDataInicial.Text);

    TimeSpan resultado = HoraFinal.Subtract(HoraInicial);

    MessageBox.Show("Resultado : " + resultado.Hours.ToString() + " Horas " +

    resultado.Minutes.ToString()+ " minutos");

    }

     

     

    José Antunes

    sábado, 15 de setembro de 2007 15:02

Todas as Respostas

  • Eu tenho essa rotina

    Public Function CalculaTempo(ByVal dtInicio As Date, ByVal hrInicio As String, ByVal hrFinal As String) As String

    Dim totSegInicio As Long

    Dim totSegFim As Long

    Dim totSegGuarda As Long

    Dim Hr As Long

    Dim hh As Long, mm As Long, ss As Long

    If dtInicio.Date <> Now.Date Then 'É quando o processo fica de um dia para o outro muda a data

    totSegInicio = CLng(Mid(hrInicio, 1, 2)) * 3600

    totSegInicio += CLng(Mid(hrInicio, 4, 2)) * 60

    totSegInicio += CLng(Mid(hrInicio, 7, 2))

    totSegGuarda = 86399 - totSegInicio

    hrInicio = "00:00:01"

    Else

    totSegGuarda = 0

    End If

    totSegInicio = CLng(Mid(hrInicio, 1, 2)) * 3600

    totSegInicio += CLng(Mid(hrInicio, 4, 2)) * 60

    totSegInicio += CLng(Mid(hrInicio, 7, 2))

    totSegFim = CLng(Mid(hrFinal, 1, 2)) * 3600

    totSegFim += CLng(Mid(hrFinal, 4, 2)) * 60

    totSegFim += CLng(Mid(hrFinal, 7, 2))

    Hr = Abs((totSegFim - totSegInicio)) + totSegGuarda

    hh = Hr \ 3600

    ss = Hr Mod 3600

    mm = ss \ 60

    ss = ss Mod 60

    CalculaTempo = Format(hh, "00") + ":" + Format(mm, "00") + ":" + Format(ss, "00")

    End Function

     

    sexta-feira, 14 de setembro de 2007 12:33
  • Olá, veja este exemplo em C#

     

    Code Snippet

    private void button1_Click(object sender, EventArgs e)

    {

    TimeSpan HoraFinal = TimeSpan.Parse(mskDataFinal.Text);

    TimeSpan HoraInicial = TimeSpan.Parse(mskDataInicial.Text);

    TimeSpan resultado = HoraFinal.Subtract(HoraInicial);

    MessageBox.Show("Resultado : " + resultado.Hours.ToString() + " Horas " +

    resultado.Minutes.ToString()+ " minutos");

    }

     

     

    José Antunes

    sábado, 15 de setembro de 2007 15:02