Usuário com melhor resposta
Problema com Calculo de campo de Horas

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á
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 datatotSegInicio =
CLng(Mid(hrInicio, 1, 2)) * 3600totSegInicio +=
CLng(Mid(hrInicio, 4, 2)) * 60totSegInicio +=
CLng(Mid(hrInicio, 7, 2))totSegGuarda = 86399 - totSegInicio
hrInicio =
"00:00:01" ElsetotSegGuarda = 0
End IftotSegInicio =
CLng(Mid(hrInicio, 1, 2)) * 3600totSegInicio +=
CLng(Mid(hrInicio, 4, 2)) * 60totSegInicio +=
CLng(Mid(hrInicio, 7, 2))totSegFim =
CLng(Mid(hrFinal, 1, 2)) * 3600totSegFim +=
CLng(Mid(hrFinal, 4, 2)) * 60totSegFim +=
CLng(Mid(hrFinal, 7, 2))Hr = Abs((totSegFim - totSegInicio)) + totSegGuarda
hh = Hr \ 3600
ss = Hr
Mod 3600mm = ss \ 60
ss = ss
Mod 60CalculaTempo = Format(hh,
"00") + ":" + Format(mm, "00") + ":" + Format(ss, "00") End Function -
Olá, veja este exemplo em C#
Code Snippetprivate 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
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 datatotSegInicio =
CLng(Mid(hrInicio, 1, 2)) * 3600totSegInicio +=
CLng(Mid(hrInicio, 4, 2)) * 60totSegInicio +=
CLng(Mid(hrInicio, 7, 2))totSegGuarda = 86399 - totSegInicio
hrInicio =
"00:00:01" ElsetotSegGuarda = 0
End IftotSegInicio =
CLng(Mid(hrInicio, 1, 2)) * 3600totSegInicio +=
CLng(Mid(hrInicio, 4, 2)) * 60totSegInicio +=
CLng(Mid(hrInicio, 7, 2))totSegFim =
CLng(Mid(hrFinal, 1, 2)) * 3600totSegFim +=
CLng(Mid(hrFinal, 4, 2)) * 60totSegFim +=
CLng(Mid(hrFinal, 7, 2))Hr = Abs((totSegFim - totSegInicio)) + totSegGuarda
hh = Hr \ 3600
ss = Hr
Mod 3600mm = ss \ 60
ss = ss
Mod 60CalculaTempo = Format(hh,
"00") + ":" + Format(mm, "00") + ":" + Format(ss, "00") End Function -
Olá, veja este exemplo em C#
Code Snippetprivate 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