Foros del Web » Programación para mayores de 30 ;) » .NET »

sumar horas

Estas en el tema de sumar horas en el foro de .NET en Foros del Web. mister programadorvip posteo una funcion buenesima para sumar horas funciona perfectamente pero tiene un problemillas que es cuando sumamos algo como 23:45 + 03:30 deberia ...
  #1 (permalink)  
Antiguo 05/04/2007, 14:55
 
Fecha de Ingreso: marzo-2006
Mensajes: 202
Antigüedad: 18 años, 1 mes
Puntos: 2
sumar horas

mister programadorvip posteo una funcion buenesima para sumar horas funciona perfectamente pero tiene un problemillas que es cuando sumamos algo como 23:45 + 03:30 deberia devolvernos 03:15 pero nos devuelve 27:15 eso no existe oviamente.... como se podrai solucionar este problema ????
la funcion es la siguiente:


Private Function sumaHoras(H1 As String, H2 As String) As String
Dim vh1 As Variant
Dim vh2 As Variant
Dim intContador As Integer
Dim vh3(2) As Long
Dim H3 As String

'Convertir a arrays
vh1 = Split(H1, ":")
vh2 = Split(H2, ":")

'Contemplar tambien los segundos
For intContador = 0 To 2

'Sumar las horas, minutos, segundos
If intContador <= UBound(vh1) Then vh3(intContador) = Val(vh1(intContador))
If intContador <= UBound(vh2) Then vh3(intContador) = vh3(intContador) + Val(vh2(intContador))
Next intContador

'Descontar las cantidades mayores de 60 en 1 y 2
vh3(1) = vh3(1) + vh3(2) \ 60
vh3(2) = vh3(2) Mod 60
vh3(0) = vh3(0) + vh3(1) \ 60
vh3(1) = vh3(1) Mod 60

'Constuir la cadena a devolver
sumaHoras = Format(vh3(0), "00") & ":" & Format(vh3(1), "00") & ":" & Format(vh3(2), "00")

End Function
  #2 (permalink)  
Antiguo 07/04/2007, 05:05
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 6 meses
Puntos: 156
Re: sumar horas

Podrías utilizar la función DateAdd para sumar horas.

Puedes echar una ojeada en:

http://msconline.maconstate.edu/tuto...bnet01-07.aspx

saludos
  #3 (permalink)  
Antiguo 09/04/2007, 07:48
 
Fecha de Ingreso: marzo-2006
Mensajes: 202
Antigüedad: 18 años, 1 mes
Puntos: 2
Re: sumar horas

por lo que veo se pueden sumar pero desde la hora del computador yo solo necesito sumar dos horas ingresadas por usuario, gracias de todos modos
  #4 (permalink)  
Antiguo 09/04/2007, 12:50
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Re: sumar horas

no es necesario hacer miles de cálculos y funciones solo es adaptar un poquito el code de los métodos que nos ofrece el framework

Podría quedar así:

Código:
 
private string SumarHoras(string h1, string h2) {
        string[] arrHour1 = h1.Split(new char[] { ':' }); //23:45
        string[] arrHour2 = h2.Split(new char[] { ':' }); //3:30

        DateTime d1 = new DateTime(1900, 1, 1, Int32.Parse(arrHour1[0]), Int32.Parse(arrHour1[1]), 0);
        d1 = d1.AddHours(Int32.Parse(arrHour2[0]));
        d1 = d1.AddMinutes(Int32.Parse(arrHour2[1]));

        return d1.ToShortTimeString();
    }
y para llamarlo

Cita:
Label1.Text = "La hora fin es " + SumarHoras("23:45", "03:30");
y listo.. me regresa 3:15

p.d. No es bueno usar Variant (eso era para vb6 que aún así tenía su costo)

Espero te sirva.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #5 (permalink)  
Antiguo 09/04/2007, 12:56
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Re: sumar horas

por cierto, para vb.net quedaría así:

Código:
 Public Function SumarHoras(ByVal h1 As String, ByVal h2 As String) As String
        Dim arrHour1() As String = h1.Split(":")
        Dim arrHour2() As String = h2.Split(":")

        Dim d1 As DateTime = New DateTime(1900, 1, 1, Int32.Parse(arrHour1(0)), Int32.Parse(arrHour1(1)), 0)
        d1 = d1.AddHours(Int32.Parse(arrHour2(0)))
        d1 = d1.AddMinutes(Int32.Parse(arrHour2(1)))


        Return d1.ToShortDateString

    End Function
  #6 (permalink)  
Antiguo 11/04/2007, 14:26
 
Fecha de Ingreso: abril-2007
Mensajes: 1
Antigüedad: 17 años
Puntos: 0
Re: sumar horas

otra manera es utilizando la función Timevalue incluida en vb6, el codigo queda asi:

Dim vh1 As Variant
Dim vh2 As Variant

vh1 = "23:45"
vh2 = "03:30"

MsgBox Format(TimeValue(vh1) + TimeValue(vh2), "hh:mm")
  #7 (permalink)  
Antiguo 16/07/2010, 15:35
Avatar de CarmenRocio  
Fecha de Ingreso: junio-2010
Ubicación: Perú - Lima - Chorrillos
Mensajes: 116
Antigüedad: 13 años, 10 meses
Puntos: 8
Respuesta: Re: sumar horas

Hola como estas. probe la funcion y no pasa nada me sale esto:02/01/1900.
mmmmmmmmm creo que lo as convertido pero bueno saben hacerlo en vb.net si es asi pasare de nuevo po aqui .Gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:06.