Como calcular la cantidad de meses y días entre un Rango de Fechas.

La pregunta parece bastante simple… utilicemos un DateDiff, pero DateDiff solo entrega la Cantidad de meses entre ese Rango y en forma separada te entrega la cantidad de días entre ese rango de fechas. Pero no devuelve ambas al mismo tiempo.

 

Por ejemplo:

20/04/2006

25/05/2006

 

Debería dar 1 Mes y 5 días.

 

A continuación adjunto 2 pequeños programas uno que fue creado por un amigo Colombiano Jorge Mario Restrepo y el otro por mi, ambos dan el mismo resultado.

 

Dim TotalMes As Long
Dim
TotalDia As Long
Dim
TotalFec As Date
TotalMes = DateDiff(DateInterval.Month, dt1.Value, dt2.Value)
If Day(dt1.Value) > Day(dt2.Value) Then
 TotalMes = TotalMes – 1
End If
TotalFec = DateAdd(DateInterval.Month, TotalMes, dt1.Value)
TotalDia = DateDiff(DateInterval.Day, TotalFec, dt2.Value)
MsgBox(“Meses :” & TotalMes & ”   Dias :” & TotalDia)

 

Y este otro lo puse, ya que me costó bastante me fui por otro camino, pero llegamos al mismo resultado.

 

    Sub Calcular(ByVal f1 As Date, _
                 ByVal f2 As Date, _
                 ByRef Meses As Long, _
                 ByRef Dias As Long)

 

        ‘Cantidad de Días
        Dim F3 As TimeSpan, nf1 As Date, nf2 As Date

 

        F3 = f2.Subtract(f1)

 

        ‘Cantidad de Meses
        Meses = DateDiff(DateInterval.Month, f1, f2)

 

        nf1 = CDate(f1.ToString(“01/MM/yyyy”))

 

        nf2 = DateAdd(DateInterval.Day, -1, CDate(f2.ToString(“01/MM/yyyy”)))

 

        Meses = DateDiff(DateInterval.Month, nf1, nf2)
        Dias = F3.Days – DateDiff(DateInterval.Day, nf1, nf2) + -1

 

        If Dias < 0 Then
            Dias = Dias + DateAdd(DateInterval.Month, 1, nf2).Day + 1
        End If

 

    End Sub


 

Y para llamar a la rutina anterior.

 

Dim Meses As Integer, _

Dias As Integer


Calcular(d1.Value, d2.Value, Meses, Dias)


MsgBox(“Meses: “ & Meses & ” Días:” & Dias)


Por si alguien en algún momento le toca encontrar algo parecido.. espero les sirva.

 

Saludos,

Jhonny Vargas

8 thoughts on “Como calcular la cantidad de meses y días entre un Rango de Fechas.

  1. Y que pasa con dt1 y dt2 o bien d1 y d2, que tipo de variables son y van declaradas en una funcion o donde porque no seeee. sorry, mi ignorancia, pero estoy empezando en esto

  2. la idea es que salga tantos años y meses dias transcurridos entre una y otra fecha, pero que no sea el total de totales:
    ejemlo: 3 años y 2 mese y 5 dias ; algo asi

  3. Ambos ejemplos están incorrectos….

    Estoy elaborando un sistema de Planilla y necesito esto mismo para conocer el tiempo laborado de un empleado. Utilicé tus dos ejemplos y cuando alguien incia el 29 de x mes , calcula mal todo porque no consideran los años bisiestos.

  4. Perdón si está bien !!!

    Es que lo estoy pasando a VB6 y cometí un error en una línea.

    Muchas Gracias, Perfecto.

Leave a Reply

Your email address will not be published. Required fields are marked *