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

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")

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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas