¿Como restas 02 horas ?

Iniciado por TheGhost(Z), 11 Noviembre 2005, 12:41 PM

0 Miembros y 1 Visitante están viendo este tema.

TheGhost(Z)

Hola amigos. aqui nuevamente

Estoy liado con restar dos tiempos no fechas please

Me explico:

Hora actual   4:55:01 pm
Hora restada 9:55:01 am

Pues siendo las 4:55:01 pm como lo hago para restarle 7 horas y que me de resultado de 9:55:01 AM

He intentado usando mid()

es decir seprandolas texto por texto_
y simplemnete restarle al primero.

Es obvio que se puede hacer restando cada carater segun vaya cambiado el tiempo y con un timer actualizando los segundos, minutos y la hora.

Pero para no liarme primero decidi preguntaar a vods. que si existe alguna funcion que me permita hacer directamente eso:
algo asi como las fechas:  (fecha())-(fecha()-7)

Si no hay funcion alguna pues nada...

Gracias de antemano.
Pedro Jeri

Xpeed

bueeno mira, la verdad se me ocurre esto de manera manual, no sé si haya una sentencia que lo simplifique... mira con la sentencia Timer obtienes lo segundos transcurridos desde media noche... pues buee partiendo de eso le restas las 7 horas que si mal no calculo serán algo así como 25200 segundos, pues le restamos ese valor a el tiempo transcurrido y conviertes lo que quede en formato de hora dividiendo por 3600 para las horas y por 60 para los minutos ... bueno, ahora lo que pienso que daria problema sería cuando lo hagamos por ejemplo ala 1:00 am por ejemplo, nos daria como resultado un número negativo y del dia anterior así que pues a poner tambien que si es negativo habria que hacer algun tipo de conversión... bueno la idea es esa xD ahora más tarde intento algo para ver si sale..


un saludo.

MaLkAvIaN_NeT

..Bien no se si es lo que este buscando pero éste codigo lo emplee al controlar un reloj.

CitarPrivate Hora As String
Private Minuto As String
Private Segundo As String
Private mvarTiempo As String
Public Event TiempoAgotado()

Public Property Let Tiempo(ByVal vData As String)
    mvarTiempo = vData
End Property
Public Property Get Tiempo() As String
    Tiempo = mvarTiempo
End Property

Public Sub DesglosaTiempo(Horex As String)
Hora = ""
Minuto = ""
Segundo = ""
For I = 1 To Len(Horex)

    If Mid$(Horex, I, 1) = ":" Then
        For j = I + 1 To Len(Horex)
           
             If Mid$(Horex, j, 1) = ":" Then
                    For h = j + 1 To Len(Horex)
                        Segundo = Segundo + Mid$(Horex, h, 1)
                        If h = Len(Horex) Then Exit Sub
                    Next
           
                Else
                Minuto = Minuto + Mid$(Horex, j, 1)
             End If
        Next
    Else
    Hora = Hora + Mid$(Horex, I, 1)
    End If
Next
'(Format(Me.DTPicker2, "hh:mm:ss AMPM"))
'Me.CommonDialog1.ShowColor
End Sub

Public Function StarTiempo(Aumento As Boolean) As String
Call DesglosaTiempo(Tiempo)
If Aumento = True Then ' es decir si va en aumento

ElseIf Aumento = False Then 'aca para empezar el reloj del cliente

If Val(Segundo) = 0 Then
Segundo = 59
    If Minuto = 0 Then
        Minuto = 59
            If Hora >= 0 Then
                Hora = Val(Hora) - 1
            End If
    Else
        Minuto = Val(Minuto) - 1
    End If
Else
Segundo = Val(Segundo) - 1
End If
   
    If Val(Hora) = 0 And Val(Minuto) = 0 And Val(Segundo) = 0 Then
        RaiseEvent TiempoAgotado
    End If
If Len(Hora) = 1 Then Hora = "0" + Trim$(Hora)
If Len(Minuto) = 1 Then Minuto = "0" + Trim$(Minuto)
If Len(Segundo) = 1 Then Segundo = "0" + Trim$(Segundo)
        StarTiempo = Trim$(Hora) + ":" + Trim(Minuto) + ":" + Trim(Segundo)
End If
End Function

Public Function ObtieneFinTiempo(Inicio As String, t_Tiempo As String) As String
Dim HInicio As String, HTiempo As String, HFin As String, Minicio As String, Mtiempo As String, Mfin As String
Call Me.DesglosaTiempo(Inicio)
HInicio = Hora
Minicio = Minuto
Call Me.DesglosaTiempo(t_Tiempo)
HTiempo = Hora
Mtiempo = Minuto

HFin = Str(Val(HInicio) + Val(HTiempo))
Mfin = Str(Val(Minicio) + Val(Mtiempo))

While Val(Mfin) > 59
    If Val(Mfin) > 59 Then
        Mfin = Str(Val(Mfin) - 59)
        HFin = Str(Val(HFin) + 1)
    End If
Wend

ObtieneFinTiempo = Trim(HFin) + ":" + Trim(Mfin) + ":00"
End Function
a por las buenas ideas