Autor Tema: Restar fechas y que devuelva en meses  (Leído 4701 veces)

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

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Restar fechas y que devuelva en meses
« 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")
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Restar fechas y que devuelva en meses
« Respuesta #1 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

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Restar fechas y que devuelva en meses
« Respuesta #2 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.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

PilusoVB

  • Bit
  • Mensajes: 2
  • Reputación: +0/-0
    • Ver Perfil
Re:Restar fechas y que devuelva en meses
« Respuesta #3 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

cobein

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 348
  • Reputación: +63/-0
  • Más Argentino que el morcipan
    • Ver Perfil
Re:Restar fechas y que devuelva en meses
« Respuesta #4 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

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Restar fechas y que devuelva en meses
« Respuesta #5 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"))
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

cobein

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 348
  • Reputación: +63/-0
  • Más Argentino que el morcipan
    • Ver Perfil
Re:Restar fechas y que devuelva en meses
« Respuesta #6 en: Febrero 02, 2012, 11:55:19 am »
Quita el = de esta linea.

If Day(dInicio) >= Day(dFin) Then

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Restar fechas y que devuelva en meses
« Respuesta #7 en: Febrero 02, 2012, 02:16:50 pm »
Espectacular cobein . muchas gracias man.

Saludos !!!
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo