Calculas días, meses y años entre dos fechas

De Todoexpertos
Tenía full rato que no pasaba por acá... La razón de mi visita se debe a una inquietud que tengo... Y no logro resolver...
Necesito determinar los días, meses y años entre dos fecha (si aplica) por ejemplo:
FechaInicial = 24/04/2010
FechaActual=07/06/2010
Y que la funcion me devuelva: en variables
Años= 0
Meses= 1
Dias= 12
'************************************************* **************'
He encontrado este código y trate de adaptar... Es una función que me devuelve una cadena en un formato algo así: YYYY/MM/DD ... Luego fuera de la función trato el resultado por una cadena... Ok
Pero la función no esta funcionando del todo bien... Porque al pasar la FechaInicial y la FechaActual ... Me devuelve 0 años... 2 meses ... Y -20 días ...
Código:
Public Function Calcular_Ultima_Visita(FechaInicial As Date, FechaActual As Date) As String
Dim Anios, Meses, Dias As Variant '**************************************************'
 Anios = DateDiff("yyyy", FechaInicial, FechaActual)
 If FechaActual < DateSerial(Year(FechaActual), Month(FechaInicial), Day(FechaInicial)) Then
    Anios = Anios - 1
End If
FechaInicial = DateAdd("YYYY", Años, FechaInicial)
Meses = DateDiff("m", FechaInicial, FechaActual)
If FechaActual < DateSerial(Year(FechaActual), Month(FechaInicial), Day(FechaInicial)) Then
    Meses = Meses - 1
End If
FechaInicial = DateAdd("m", Meses, FechaInicial)
Dias = DateDiff("d", FechaInicial, FechaActual)
 If FechaActual < DateSerial(Year(FechaActual), Month(FechaInicial), Day(FechaInicial)) Then
      Dias = Dias - 1
End If
FechaInicial = DateAdd("d", Dias, FechaInicial)
Calcular_Ultima_Visita = Anios & "/" & Meses & "/" & Dias
 End Function
Aca usan la funcion DateSerial que de verdad lo termino de entender... Y cuando a la variable FechaInicial le agregan los dias de la misma FechaInicial tampoco lo comprendo...

2 respuestas

Respuesta
1
Creo que si usas Días = DateDiff("d", FechaInicial, FechaActual) te da el numero de días totales de diferencia entre las dos fechas, ese resultado le aplicas una división entre 365 y tienes los años, luego le restas el numero de años multiplicado por 365 y te quedan los meses y días, divides entre 30 y te da el numero de meses, y por ultimo multiplicas el numero de meses que te dio por 30 y lo restas del resultado y te quedan los días.
Respuesta

Si de algo te sirve te puedo decir que en Visual Basic esa función siempre ha sido compleja. Te ofrezco un código que calcula día, hora, minutos y segundos. Yo en particular divido en 365 el tiempo total de días para que me genere al año o la fracción de él. Finalmente asigno un textbox para mostrar el resultado con un formato de fracción.

Si te sirve estaré complacido de ayudarte

Pedro Cruz Pérez

Dim a As Double

Dim fechaInicial As Date = CType(TextBox2.Text, Date)
Dim fechaFinal As Date = CType(DateTimePicker3.Text, Date)
Dim Tiempo As TimeSpan
Tiempo = fechaFinal.Subtract(fechaInicial)

a = (Tiempo.TotalDays) / 365
TextBox8.Text = a.ToString("##0.0")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas