Visual Basic - Restar horas y minutos

Life is soft - evento anual de software empresarial
 
Vista:

Restar horas y minutos

Publicado por Angie (5 intervenciones) el 11/05/2010 19:00:58
Hola buen dia;

Antes que nada gracias por su tiempo en leer mi nota.

Tengo unas dudas acerca de como restar horas y minutos en formato de 24 hrs, intente darle formato directo en las cajas de texto (Time 13:52:12) pero no me funciono la operacion me arroja cero o bien un error de no coinciden los tipos, me podrian ayudar en cuanto a una manera de hacer esta operacion ejemplo: text1= 7:00 - text2= 14:00 en text3= 7:00 quiero poder sacar la diferencia de horas, lo hago en excel pero quiero lograrlo en visual 6 0 2008 gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Restar horas y minutos

Publicado por Pedro Luis (128 intervenciones) el 12/05/2010 08:43:37
Cuando se suman o restan dias o horas el resultado se da en dias, siendo las horas los decimales.

1
2
3
4
5
cdate("14:00")-cdate("7:00")=0.291666666666667 días luego
 
0.291666666666667 * 24=7'00000000000001 ha habido redondeos
 
horas=int(0.291666666666667 * 24)=7

O sea cuando se opera con Fechas y Horas el resultado son días, con sus decimales y todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por Neogeo (23 intervenciones) el 12/05/2010 09:22:08
hola, lo puedes hacer de la sig manera:
en un form agregas 3 text, command luego copias el sig codigo

1
2
3
4
5
6
Private Sub Command1_Click()
Dim t0, t1 As Variant
t0 = Format(Text1, "hh:mm")
t1 = Format(Text2, "hh:mm")
Text3 = Format(TimeValue(t1) - TimeValue(t0), "hh:mm")
End Sub

eso es todo si quieres tambien puedes agregar los segundos en el formato "hh:mm:ss"
chauu suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:Restar horas y minutos

Publicado por Angie (5 intervenciones) el 19/05/2010 20:18:40
Ok, muchas gracias por su aportacion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por Doris Chamorro (1 intervención) el 02/06/2014 17:57:34
Gracias.... con ese código si funcionó .

muchas gracias..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por guillermo macia (1 intervención) el 23/07/2015 07:35:14
Gracias bro viejo el tema pero me salvaste
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Restar horas y minutos

Publicado por Jean-Gilles R. (1 intervención) el 14/12/2015 16:05:01
Agradecido!!! Muy util.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por PulsarArena (1 intervención) el 19/12/2016 23:12:25
Excelente; me ayudó mucho. gracias amigo.
Ahora estoy pensando como multiplicar horas y minutos por pago por hora... les agradezco su apoyo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por Crazy Monkey (1 intervención) el 04/01/2017 10:37:25
Cmo hago que eso funcione en Visual Basic 2010 express?
al sarle click al boton siempre me marca:

La conversión de la cadena "hh:mm" en el tipo 'Date' no es válida.


Gracias d ntemano y SALUDOS!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por lucas (2 intervenciones) el 25/08/2017 11:55:40
El rango de horas que deja convertir es de 24 si tu rango son ejemplo, trabajé al mes 40:00 horas, eso no es una hora valida para el sistema..

en casos como este yo al menos he tenido que hacer una funcion que reste o sume horas partiendo de la formula original de como se suman o restan horas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por Sofia Perez (13 intervenciones) el 24/10/2017 20:09:46
Hola lucas,
Yo tengo ese problema tengo rangos que superan las 24 horas. Este es mi caso: necesito saber cuántas horas funcionó una máquina, y tengo 2 horas:
Hora_inicio = 22h00
Hora_fin = 01h15
La respuesta que busco es: 03h15, es decir que ese tiempo funcionó la máquina desde la hora en que inició hasta la hora en la que finalizó.
Pero si RESTO ó si uso DATEDIFF para obtener la diferencia entre ambas horas, obtengo 21:30 ó 21:00, es decir no es el resultado que espero. HELP ME, alguiensito si sabe. Muy agradecida!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por lucas (2 intervenciones) el 25/10/2017 02:03:41
Hola, yo hize esta funcion para restar los tiempos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Private Function RestaTiempos(Tiempo, Entiempo) As String
    '________________________________________________________________________________
    'Resta tiempo en Entiempo con formatos HH:MM
    '________________________________________________________________________________
    If Tiempo = "" Then
        Tiempo = "00:00"
    End If
    If Entiempo = "" Then
        Entiempo = "00:00"
    End If
 
    Tiempo = LimpiaDato(Tiempo)
    Entiempo = LimpiaDato(Entiempo)
 
    Dim HastaT As Integer = InStr(1, Tiempo, ":")
    Dim DesdeT As Integer = Len(Tiempo)
    Dim HastaE As Integer = InStr(1, Entiempo, ":")
    Dim DesdeE As Integer = Len(Entiempo)
    Dim EnMinus As Double
    Dim EnHoras As Double
 
    Dim ElMinus As Double
    Dim ElHoras As Double
 
    Dim Mostrartime As String
 
    EnHoras = Mid(Entiempo, 1, HastaE - 1)
    EnMinus = Mid(Entiempo, HastaE + 1, 2)
 
    ElHoras = Mid(Tiempo, 1, HastaT - 1)
    ElMinus = Mid(Tiempo, HastaT + 1, 2)
 
    Dim RestaHoras As Double
    Dim Restaminus As Double
    If EnHoras > 0 Then
        RestaHoras = EnHoras - ElHoras
        Restaminus = EnMinus - ElMinus
 
        If Restaminus < 0 Then
            Restaminus = (Restaminus + 60)
            RestaHoras = RestaHoras - 1
        End If
 
        Mostrartime = RestaHoras & ":" & Restaminus
        RestaTiempos = Mostrartime
    Else
        RestaTiempos = ElHoras
    End If
 
End Function

LimpiaDato - > es una funcion que normaliza la hora al formato 00:00 si a ti te llegan las horas correctas no hace falta quitalo
a mi me la introduce un usuario y me ponen cualquier cosa.

la de la suma

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Private Function SumaTiempos(Tiempo, Entiempo) As String
    '________________________________________
    'suma Tiempo en Entiempo con formatos HH:MM
    '_______________________________________
 
    If Tiempo = "" Then
        Tiempo = "00:00"
    End If
    If Entiempo = "" Then
        Entiempo = "00:00"
    End If
    Dim HastaT As Integer = InStr(1, Tiempo, ":")
    Dim DesdeT As Integer = Len(Tiempo)
    Dim HastaE As Integer = InStr(1, Entiempo, ":")
    Dim DesdeE As Integer = Len(Entiempo)
    Dim EnMinus As Double
    Dim EnHoras As Double
 
    Dim ElMinus As Double
    Dim ElHoras As Double
 
 
    Dim Mostrartime As String
 
    EnHoras = Mid(Entiempo, 1, HastaE - 1)
    EnMinus = Mid(Entiempo, HastaE + 1, 2)
 
    ElHoras = Mid(Tiempo, 1, HastaT - 1)
    ElMinus = Mid(Tiempo, HastaT + 1, 2)
 
    If (EnMinus + ElMinus) > 60 Then
        'los minutos van sumando horas
        EnHoras = EnHoras + 1
        EnMinus = (EnMinus + ElMinus) - 60
    ElseIf (ElMinus + EnMinus) = 60 Then
        ' no más minutos reinicio contador
        EnHoras = EnHoras + 1
        EnMinus = 0
    Else
        EnMinus = EnMinus + ElMinus
    End If
 
 
    EnHoras = EnHoras + ElHoras
 
    Mostrartime = EnHoras.ToString() & ":" & EnMinus.ToString()
    SumaTiempos = Mostrartime
 
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por Sofia Perez (13 intervenciones) el 26/10/2017 16:14:06
Hola lucas,
Una consultita... según tu código cuál sería Tiempo y cuál sería Entiempo, es decir según las variables que te indicaba:
Hora_inicio = 22h00
Hora_fin = 01h15
Si tienes el código en VB6, podrías probarle si al ingresar estas horas el resultado que me da es 3h15 ?
Gracias de antemano !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por Sofia (13 intervenciones) el 27/10/2017 15:28:40
Yo hice una prueba de escritorio, pero no me salió ese resultado, si me puedes ayudar te agradecería mucho.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 147
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:Restar horas y minutos

Publicado por Juan Gilberto (323 intervenciones) el 27/10/2017 17:08:45
En tu caso tienes que tomar en cuenta la fecha del dia...
porque empezo a las 10 de la noche y termino a la1:15 de la madrugada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 147
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:Restar horas y minutos

Publicado por Juan Gilberto (323 intervenciones) el 27/10/2017 18:13:42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim Inicio    As Date
Dim Final     As Date
Dim MHoras    As Double
Dim MMinDec   As Double
Dim MMin      As Double
Dim Resultado As String
 
Inicio = CDate("2017/10/26 22:00")
Final = CDate("2017/10/27 1:15")
 
MHoras = Int((Final - Inicio) * 24#)
MMinDec = ((Final - Inicio) * 24#) - MHoras
MMin = MMinDec * 60#
 
MsgBox "Horas : " & Format(MHoras) & vbCrLf & _
       "Minutos Decimales : " & Format(MMinDec) & vbCrLf & _
       "Minutos : " & Format(MMin) & vbCrLf & vbCrLf & _
       "Resultado " & vbCrLf & _
       "    De:   " & Format(Inicio, "Hh:Nn") & vbCrLf & _
       "     A:   " & Format(Final, "Hh:Nn") & vbCrLf & _
       "Son:      " & Format(MHoras) & ":" & Format(MMin, "00")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por Sofia (13 intervenciones) el 27/10/2017 18:39:46
Es correcto, si pongo con todo y fecha si me sale el resultado que busco, entonces tendré que añadirlo a la hora ingresada por el usuario. Gacias Juan Gilberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por Sofia (13 intervenciones) el 27/10/2017 19:06:50
Juan Gilberto,
Una consulta, para qué pones el signo "#" después de los números ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 147
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:Restar horas y minutos

Publicado por Juan Gilberto (323 intervenciones) el 28/10/2017 23:53:22
Es el tipo de datos de Doble Precision ....vb6 lo pone solo si tu tecleas por ejemplo 54. al poner el punto sin decimales pone el #
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por Sofia (13 intervenciones) el 30/10/2017 18:56:45
Entendido, gracias. Te cuento que estoy probando la función y si me da los resultados esperados, excepto cuando ingreso por ejemplo:
Inicio = CDate("2017/10/26 22:30")
Final = CDate("2017/10/27 02:30")

Me da un resultado de 3 horas, cuando debe darme 4 horas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 147
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:Restar horas y minutos

Publicado por Juan Gilberto (323 intervenciones) el 30/10/2017 22:44:15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Dim Inicio    As Date
Dim Final     As Date
Dim MHoras    As Double
Dim MMinDec   As Double
Dim MMin      As Double
Dim Resultado As String
 
Inicio = CDate("2017/10/26 22:30")
Final = CDate("2017/10/27 2:33")
 
MHoras = Int((Final - Inicio) * 24#)
MMinDec = ((Final - Inicio) * 24#) - MHoras
MMin = Round(MMinDec * 60#)
If MMin >= 60# Then
    MHoras = MHoras + 1#
    MMinDec = 0#
    MMin = MMin - 60#
End If
 
MsgBox "Horas : " & Format(MHoras) & vbCrLf & _
       "Minutos Decimales : " & Format(MMinDec) & vbCrLf & _
       "Minutos : " & Format(MMin) & vbCrLf & vbCrLf & _
       "Resultado " & vbCrLf & _
       "    De:   " & Format(Inicio, "Hh:Nn") & vbCrLf & _
       "     A:   " & Format(Final, "Hh:Nn") & vbCrLf & _
       "Son:      " & Format(MHoras) & ":" & Format(MMin, "00")
Agrega y corrige lo que esta en negritas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por Sofia (13 intervenciones) el 01/11/2017 13:27:15
Si, algo parecido le hice, muchas gracias por toda tu ayuda Juan Gilberto !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2
Ha aumentado su posición en 31 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:Restar horas y minutos

Publicado por pedro (1 intervención) el 17/06/2019 18:11:08
Buenos dias, tengo un problema parecido a lo indicado , manejo un excel donde me dan las incidencias, tengo la fecha inicio(dd:mm:yyyy hh:mm) y fecha fin (dd:mm:yyyy hh:mm), con un horario de trabajo de los operadores de Lunes a Viernes de 8:30 - 19:00 y Sabados 08:30 - 14:00, Me gustaria que me ayuden a crear una funcion que saque la cantidad de horas y munutos que atendio la incidencia.
Cabe destacar que las incidencias aveces dura muchos dias.
A la espera de su pronta respuesta me despido muy cordialmente,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por franco (1 intervención) el 09/12/2018 19:59:51
Hermano capaz ni leas estoy pero muchisimas gracias! me re salvaste!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Restar horas y minutos

Publicado por Victor (1 intervención) el 07/03/2019 15:51:41
Por aquí estoy en 2019.. aún usando vb6.. y también me sirvió el codigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:Restar horas y minutos

Publicado por Rolando Rubén Pelaye (4 intervenciones) el 24/12/2019 00:05:36
Hola Genio Amigo, gracias por tu aporte. Te cuento, estoy haciendo un sistema para una supuesta clínica que tiene quirófano. La resta no me da cuando quiero saber el tiempo que ocupó una cirugía, cuando la cirugía comienza, por ejemplo a las 23 hs y finaliza a las 4 del otro día. Me das una mano amigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar