Visual Basic - Como restar dos fechas

Life is soft - evento anual de software empresarial
 
Vista:

Como restar dos fechas

Publicado por Antonio Corena (97 intervenciones) el 15/07/2004 18:40:44
Hola amigos, esto lo he preguntado muchas veces, pero la verdad no se como manejarlo y cada ejemplo que manejo me da un resultado diferente, no entiendo porque es tan dificil manejar las fechas y horas en visual, tengo el siguiente ejemplo:
11/07/2004 22:18:00 - 11/07/2004 16:00
como hago para restar esto?. me tiene desubicado este manejo de fechas y horas, espero me puedan colaborar. es algo super urgente, entregue una aplicacion y me reporte este error. espero me puedan colaborar. 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:Como restar dos fechas

Publicado por Ivan (3 intervenciones) el 15/07/2004 18:47:04
14.- Ejemplo de cómo restar fechas y horas (26/Mar)
Dos ejemplos de cómo restar fechas y horas.
Para saber los segundos entre dos horas o los días entre dos fechas.
Crea un form con los siguientes controles, dejale los nombre por defecto.
4 TextBox
2 Labels
2 Commands
Distribuyelos para que los dos primeros TextoBoxes estén con el primer label y command, lo mismo con el resto.
Añade lo siguiente al form y pulsa F5
'Ejemplo de prueba para restar fechas y horas (26/Mar/97)
'(c) Guillermo Som, 1997
Option Explicit

Private Sub Command1_Click()
Dim t0 As Variant, t1 As Variant

'Text1 Tendrá una fecha anterior
'Text2 tendrá la nueva fecha
t0 = DateValue(Text1)
t1 = DateValue(Text2)
Label1 = t1 - t0

End Sub

Private Sub Command2_Click()
Dim t0 As Variant, t1 As Variant

'Text3 Tendrá una hora anterior
Text4 = Format(Now, "hh:mm:ss")
t0 = Format(Text3, "hh:mm:ss")
t1 = Format(Text4, "hh:mm:ss")
Label2 = Format(TimeValue(t1) - TimeValue(t0), "hh:mm:ss")

End Sub

Private Sub Form_Load()
'Para probar la diferencia de fechas
Text1 = DateValue(Now)
Text2 = DateValue(Now + 10)
'
'Para probar la diferencia de horas
Text3 = Format(Now, "hh:mm:ss")
Text4 = Format(Now, "hh:mm:ss")

Command1_Click
Command2_Click
End Sub

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:Como restar dos fechas

Publicado por Arturo Rojas (1 intervención) el 13/04/2023 00:55:38
Resultado = DateAdd("m", -x, Fecha)

"d"...Fecha menos "-x" días
"m"...Fecha menos "-x" meses
"y"...Fecha menos "-x" año
y asi
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:Como restar dos fechas

Publicado por Antonio (24 intervenciones) el 15/07/2004 18:59:47
Si solo quieres restar horas has este ejemplo para que lo entiendas
ya si son dias es otro royo porque en este caso es el mismo dia
bye

Dim f1 As Date
Dim f2 As Date
Dim Fecha As Date
f2 = "11/07/2004 22:18:00"
f1 = "11/07/2004 16:00"
Fecha = f2 - f1
MsgBox Fecha

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

No a funcionado, alguien que pueda ayudarme

Publicado por Antonio Corena (97 intervenciones) el 15/07/2004 20:14:46
Noa funcionado los ejemplos que me han enviado. no se que hacer????
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:No a funcionado, alguien que pueda ayudarme

Publicado por Cecilia Colalongo (3116 intervenciones) el 15/07/2004 20:50:29
Revisa la función DateDiff, en http://msdn.microsoft.com/library/en-us/vbenlr98/html/vafctDateDiff.asp
tienes la documentación para ese caso:

f1=CDate("11/07/2004 22:18:00")
f2=CDate("11/07/2004 16:00")

Diferencias:

DifDias=DateDiff("d",f1,f2)
DifMeses=DateDiff("m",f1,f2)
DifAnios=DateDiff("y",f1,f2)

DifHoras=DateDiff("h",f1,f2)
DifMinutos=DateDiff("n",f1,f2)


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:No a funcionado, alguien que pueda ayudarme

Publicado por erick alvarez (17 intervenciones) el 15/07/2004 23:26:24
solo crea 2 variables tipo fecha y luego le dast la intruccion siguiente:
datevalue(Vfecha1) - datevalue(vfecha2) el resultado lo guardas en una variable numerica y te va a dar los dias de diferencia
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

ha resultado más dificil de lo que pensaba o no...

Publicado por Antonio Corena (97 intervenciones) el 15/07/2004 21:03:43
hola mis queridos amigos, gracias por su tolerancia, pero este último ejemplo que me envia cecilia no aplicaría puesto que necesito tener la diferencia total, no parcial es decir, si la primera fecha es :07/11/2004 01:15 y la segunda es 08/11/2004 01:20, necesito decir que la tarea se tardo 1 día y 5 minutos, es decir 00:05, pero global, asi si se demora 3 dias entonces seria 11/11/2004, me hago entender.
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:ha resultado más dificil de lo que pensaba o no

Publicado por Cecilia Colalongo (3116 intervenciones) el 15/07/2004 21:15:13
Las fechas se manejan con sistema sexagecimal no decimal por lo que lo único que tienes que hacer es sumar las diferencias parciales, no veo porque tanto problema.

En ese caso, la diferencia en minutos es 1445 DateDiff("n",f1,f2):

x=1445 en horas de 60 minutos son:

Int(x/60) = 24 horas y si un día tiene 24 horas = 1 día

x Mod 60 = 5 minutos

Si lo quieres llevar a fechas es: DateAdd("n",x,f2)
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

Diferencias de Fecha

Publicado por Giovana (5 intervenciones) el 13/07/2006 16:11:24
Hola
UYo tengo el mismo problema, lo que pasa es que yo al utilizar la funcion datediff me sale la cantidad de dias pero cuando esos dias lo convierto a año, meses y dias en micaso por que es loq ue necesito me salen mas dias de los que realmente es
Me e dado cuenta que eso es por el numero de meses que tiene cada mes

si alguien tiene una idea mejor por favornecesitaria su ayuda lo que pasa es que estoy sacando elpromediod e dias para mi programa de liquidaciones de personal

y esa operacion tiene que tener el numero de años, meses y dias exacto

Se los Agradeceria mucho

Giovana
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:No a funcionado, alguien que pueda ayudarme

Publicado por Rafael Yzarra (1 intervención) el 16/07/2004 17:50:29
Simplemente, utiliza el comando DateDiff, el cual tiene como definición:

DateDiff (Fecha minuendo, modelo, Fecha sustraendo, modelo)

En donde el modelo, no es más que el tipo de valor en formato fecha que deseas operar. Véase el siguiente ejemplo:

----------------------------
Dim Fech1 as Date
Dim Fech2 as date
Dim ResFech as Integer
Dim ContFech1 as DTPicker
Dim ContFech2 as DTPicker
...........
' Validar los DTPicker's
...........

ResFech = DateDiff (Fech1,d,Fech2,d)

' d: En el comando, d significa días

-----------------------------------

Si me envías un correo, tre enviaré un ejemplo completo de como actúa dicho comando. Prueba lo que te he enviado.
Si existen errores y quieres profundizar, introducete en la ayuda de Visual Basic (MSDN) y en el índice, coloca "OPERACIONES CON FECHAS".
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