Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: E N T E R en Enero 31, 2012, 11:39:44 am

Título: Restar fechas y que devuelva en meses
Publicado por: E N T E R en Enero 31, 2012, 11:39:44 am
Necesito restar 2 fechas entre si y quiero que me devuelva en meses.
Lo hago así pero me trae mal el mes por ejemplo si resto (10/01/2001) - (03/02/2012) ya me dice que es 1 mes pero todavía no es falta 7 dias.

Este es mi codigo:

Código: (VB) [Seleccionar]
lblCuotas.Caption = Format(txtFecha2.Text, "mm") - Format(txtFecha1.Text, "mm")
Título: Re:Restar fechas y que devuelva en meses
Publicado por: raul338 en Enero 31, 2012, 03:11:30 pm
Usa la funcion DateDiff, usando asi

DateDiff("m", Date, FechaARestar)

y te daran cuantos meses hay de hoy a esa fecha :P
Título: Re:Restar fechas y que devuelva en meses
Publicado por: E N T E R en Enero 31, 2012, 04:08:38 pm
Me da el mismo resultado raul.

Código: (VB) [Seleccionar]
lblCuotas.Caption = DateDiff("m", txtFecha2.Text, txtFecha1.Text)
Si por ejemplo resto (15/01/2012) - (10/03/2012) son 1 mes recién faltan todavía 5 días para que se cumpla 2 meses. yo no quiero que cuente si faltan días.
Título: Re:Restar fechas y que devuelva en meses
Publicado por: PilusoVB en Enero 31, 2012, 07:58:03 pm
Así me funciona a mi(siempre que se valide que la segunda fecha ingresada sea mayor a la primera), con "ww" como argumento de DateDiff obtenemos la cantidad de semanas entre fechas, si lo dividimos por 4 (semanas que tiene un mes), obtenemos un entero que es la cantidad de meses entre las fechas.

Código: (VB) [Seleccionar]
lbl.Caption = DateDiff("ww", t1.Text, t2.Text)
 lbl.Caption = lbl.Caption \ 4
Título: Re:Restar fechas y que devuelva en meses
Publicado por: cobein en Febrero 01, 2012, 04:50:59 pm
Teniendo en cuenta la logica que pretenden aplicar algo asi podria funcionar

Código: [Seleccionar]
Option Explicit

Private Sub Form_Load()
    Debug.Print RestarMeses(CDate("10/1/12"), CDate("3/2/12"))
End Sub

Private Function RestarMeses(dInicio As Date, dFin As Date) As Long
    RestarMeses = DateDiff("m", dInicio, dFin)
    If Day(dInicio) >= Day(dFin) Then
        RestarMeses = RestarMeses - 1
    End If
End Function
Título: Re:Restar fechas y que devuelva en meses
Publicado por: E N T E R en Febrero 02, 2012, 10:23:24 am
Es así mismo cobein solo que no funciona el

parece por que solo te marca cuando es mayor o sea si pones:

Código: (VB) [Seleccionar]
Debug.Print RestarMeses(CDate("10/01/2012"), CDate("10/02/2012"))me devuelve 0

Ahora si aumento 1 día mas devuelve a 1

Código: (VB) [Seleccionar]
Debug.Print RestarMeses(CDate("10/01/2012"), CDate("11/02/2012"))
Título: Re:Restar fechas y que devuelva en meses
Publicado por: cobein en Febrero 02, 2012, 11:55:19 am
Quita el = de esta linea.

If Day(dInicio) >= Day(dFin) Then
Título: Re:Restar fechas y que devuelva en meses
Publicado por: E N T E R en Febrero 02, 2012, 02:16:50 pm
Espectacular cobein . muchas gracias man.

Saludos !!!