SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: solcito en Lunes 7 de Marzo de 2005, 21:57

Título: Sumar Dos Variables De Tipo Date
Publicado por: solcito en Lunes 7 de Marzo de 2005, 21:57
Hola gente! Mi duda es la siguiente:

estoy haciendo esto

Time + 10  

y me devuelve: 09/01/1900 17:55:58

yo lo que necesito es a la hora (17:55:58)  sumarle 10 minutos, ya pobré varias cosas y no se como hacerlo

Si alguien sabe como ...........

 :comp:
Título: Re: Sumar Dos Variables De Tipo Date
Publicado por: Roll en Lunes 7 de Marzo de 2005, 22:37
usa la funcion DateAdd

mira el MSDN para mas info

suerte  :)
Título: Re: Sumar Dos Variables De Tipo Date
Publicado por: eliza_marti en Lunes 7 de Marzo de 2005, 23:29
Hola solcito!.. :hola: ..mira ...no se si habrá una función que simplifique esto...pero se me ocurrió hacer esto y funcionó...es para sumar 10 minutos..pero si quieres le cambias la variable para que funcione con otros minutos.. ;) ..espero que te sirva... :P ..bye!.. :hola: ..nos vemos... :ph34r:  :comp:

Código: Text
  1. Private Sub Form_Load()
  2.     minutos_sumados = 10
  3.     Text1.Text = Time
  4.     hola = Time
  5.     hora = Hour(Time)
  6.     minutos = Minute(Time)
  7.     segundos = Second(Time)
  8.     tiempo_totales = (hora * 3600) + (minutos * 60) + segundos +(minutos_sumados * 60)
  9.     hora_nueva = tiempo_totales \ 3600
  10.     minutos_nuevos = (tiempo_totales Mod 3600) \ 60
  11.     segundos_nuevos = (tiempo_totales Mod 3600) Mod 60
  12.     Text2.Text = Str(hora_nueva) + ":" + Str(minutos_nuevos) + ":" + Str(segundos_nuevos)
  13. End Sub
  14.  
Título: Re: Sumar Dos Variables De Tipo Date
Publicado por: piyey en Miércoles 9 de Marzo de 2005, 01:53
Hola solcito...

Estube probando como resolver tu problema, y por analogía se me ocurrió esta idea:


Código: Text
  1. Private Sub Form_Load()
  2.     Dim a As Date
  3.     Dim b As String
  4.     a = Time
  5.     b = CStr(a)
  6.     Mid(b, 4, 2) = Mid(b, 4, 2) + 10
  7. End Sub
  8.  

el resultado te lo da en String, pero funciona. Solo habría que hacerle algunas modificaciones por lo de:

Código: Text
  1. 10:54:21 'Hora actual
  2. 10:64:21 'La hora que daría como resultado
  3.  

Solo evalualo y haces las respectivas operaciones para corregirlo...

See you!!!  :hola:
Piyey.
Título: Re: Sumar Dos Variables De Tipo Date
Publicado por: eliza_marti en Miércoles 9 de Marzo de 2005, 02:56
Pero...piyey.... :huh: ...si tomas los caracteres correspondientes solo a los minutos puede ser que se sobrepasen los 60 m....y....date cuenta que hay un error ..por ejemplo en el ejemplo que pones..no existen las 10 con 64  :huh:  ..
Bueno bye :hola:  :comp:  :ph34r:
Título: Re: Sumar Dos Variables De Tipo Date
Publicado por: none123 en Miércoles 9 de Marzo de 2005, 06:02
Buenas...

Hay una forma muy practica, facil, y rapida:
------------------------------------------------------------------------------------
var =  Time() + #12:10:00 AM#  (suma 10 minutos)

var =  Time() + #12:00:10 AM#  (suma 10 segundos)

var =  Time() + #12:10:08 AM#  (suma 10 minutos con 8 segundos)
------------------------------------------------------------------------------------
Eso es todo es bastante sencillo y funciona a la perfeccion; gral mente la solucion mas logica y sencilla es la correcta de entre varias.
Por si las dudas si a alguien le queda duda del funcionamiento lo q hace esto es lo siguiente: time() --> toma la hora actual (del sistema)
               #12:00:00# --> esto va entre numeral para indicar de q es hora y para visual 12:00:00 es como para nosotros el cero osea representa el conjunto vacio si sumo solamente 12:00:00 a la hora actual no va a variar en nada; por eso cambiando los 00:00 de minutos y segundos ya empieza a sumar... thats all!!

Bueno espero q les sirva...
Título: Re: Sumar Dos Variables De Tipo Date
Publicado por: eliza_marti en Miércoles 9 de Marzo de 2005, 15:18
Tienes mucha razón none123!..  :huh: lo probé y resulto muy bien.. ;) ...es más práctico que eso de estar multiplicando..
Gracias none123.. :hola: ..nos vemos!...  :sorcerer:
Título: Re: Sumar Dos Variables De Tipo Date
Publicado por: elmango80 en Jueves 10 de Marzo de 2005, 20:46
Hola solcito!

Esto te puede servir perfectamente,,, es un poco largo pero funciona.

Código: Text
  1.  
  2.  Function SumarHoras(ByVal Hora1 As String, ByVal Hora2 As String) As String
  3.  
  4.     Dim H_Hora1      As String
  5.     Dim H_Hora2      As String
  6.     Dim M_Hora1      As String
  7.     Dim M_Hora2      As String
  8.     Dim ST_Horas     As Long
  9.     Dim ST_Minutos   As Long
  10.     Dim Horas        As Long
  11.     Dim Minutos      As Long
  12.     Dim MinTemp      As Long
  13.     Dim THoras       As String
  14.     Dim TMinutos     As String
  15.     Dim PosComa      As Integer
  16.     Dim temp         As Double
  17.     Dim SepDecimal   As String * 1
  18.  
  19.     '//Suma Horas
  20.     H_Hora1 = Left$(Hora1, (InStr(1, (Hora1), "h")) - 1)
  21.     H_Hora2 = Left$(Hora2, (InStr(1, (Hora2), "h")) - 1)
  22.     ST_Horas = Val(H_Hora1) + Val(H_Hora2)
  23.  
  24.     '//Suma Minutos
  25.     PosComa = Val(InStr(1, (Hora1), ",")) + 1
  26.  
  27.     M_Hora1 = Val(Mid$(Hora1, PosComa, Len(Hora1) - PosComa))
  28.  
  29.     PosComa = Val(InStr(1, (Hora2), ",")) + 1
  30.  
  31.     M_Hora2 = Val(Mid$(Hora2, PosComa, Len(Hora2) - PosComa))
  32.  
  33.     ST_Minutos = Val(M_Hora1) + Val(M_Hora2)
  34.  
  35.     MinTemp = (ST_Horas * 60) + ST_Minutos
  36.  
  37.     temp = (1 / 2)
  38.  
  39.     If InStr(1, temp, ",") <> 0 Then
  40.         SepDecimal = ","
  41.     End If
  42.     If InStr(1, temp, ".") <> 0 Then
  43.         SepDecimal = "."
  44.     End If
  45.  
  46.     'Hora exacta (Si MinTemp es nº entero)
  47.     If InStr(1, (MinTemp / 60), SepDecimal) = 0 Then
  48.         Horas = (MinTemp / 60)
  49.         Minutos = 0
  50.  
  51.     'Solo minutos (Si MinTemp < 60)
  52.     ElseIf MinTemp < 60 Then
  53.        Horas = 0
  54.        Minutos = MinTemp
  55.     Else
  56.  
  57.     'Hora con minutos
  58.         Horas = Int(MinTemp / 60)
  59.         Minutos = MinTemp - (Horas * 60)
  60.     End If
  61.  
  62.  
  63.     THoras = Horas
  64.     If Len(THoras) = 1 Then
  65.         THoras = "0" & Horas
  66.     Else
  67.         THoras = Horas
  68.     End If
  69.  
  70.     TMinutos = Minutos
  71.     If Len(TMinutos) = 1 Then
  72.         TMinutos = "0" & Minutos
  73.     Else
  74.         TMinutos = Minutos
  75.     End If
  76.  
  77.     SumarHoras = THoras & "h, " & TMinutos & "m"
  78.  
  79. End Function
  80.  
  81.  
Título: Re: Sumar Dos Variables De Tipo Date
Publicado por: eliza_marti en Jueves 10 de Marzo de 2005, 20:55
Solcito!.. :hola: ..porcia..el mio tambien funciona!.. ..:whistling: ..chauuuuuu... :sorcerer:
Título: Re: Sumar Dos Variables De Tipo Date
Publicado por: solcito en Jueves 10 de Marzo de 2005, 22:26
Hola Gente agradezco mucho su ayuda,

la solucion perfecta era, como dijo Roll,

DateAdd("n", 10, <HoraActual>)  como ejemplo.

funciona de maravillas y en una sola linea  :D


Saludos :hola:
Título: Re: Sumar Dos Variables De Tipo Date
Publicado por: eliza_marti en Jueves 10 de Marzo de 2005, 22:45
Solcito!.. :hola: ..me alegro que hayas podido solucionar ese problemita.. :P  ...y ahora hemos aprendido una nueva opción para el manejo de horas en pocas lineas de codigo!... :bravo: ..Gracias Chicos!.. :hola:   :guitar:  :ph34r: