Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   calcular meses entre dos fecha (https://www.clubdelphi.com/foros/showthread.php?t=91600)

emeritos 13-03-2017 13:34:53

calcular meses entre dos fecha
 
Hola dilferos.

¿Existe alguna funcion que me diga los meses transcurridos entre dos fechas. Esas fechas estan en una tabla definidas con date?

Gracias.

jhonny 13-03-2017 13:46:00

Hola,

System.DateUtils.MonthsBetween ;)

Saludos.

emeritos 13-03-2017 13:56:35

me da error la utilizo asi
Código Delphi [-]
i : Integer;
i := System.DateUtils.MonthsBetween(Texperiencia['fecha_fin'],Texperiencia['fecha_ini']);

y asi tambien

Código Delphi [-]
i : Integer;
i := MonthsBetween(Texperiencia['fecha_fin'],Texperiencia['fecha_ini']);

No se si hay que poner algo en el uses

emeritos 13-03-2017 14:00:33

Ya esta muchas gracias.

emeritos 14-03-2017 09:49:40

Me he dado cuenta que hay veces que no te dice los meses que han pasado yaque la funcion solo calcula los dias y divide por 30. Por ejemplo desde el 1/02/2017 al 1/03/2017 ha pasado 1 mes y esta funcion te dice que 0 meses.

¿Hay otra mas exacta ?

gracias.

jhonny 14-03-2017 20:51:21

No he adecuado el siguiente ejemplo para lo que necesitas que son sólo meses... pero seguro que te dará un norte...

http://www.clubdelphi.com/foros/show...55&postcount=3

Lepe 15-03-2017 13:28:59

El cálculo que hace delphi es correcto.

Al omitir la parte horaria de una fecha, se igualan a 0:00 y puesto que no ha pasado ni un solo milisegundo, te da cero meses en lugar de 1. haz la prueba con 1/03/2017 0:00:00,1

Yo declararía las fechas como timeStamp, es decir, fecha y hora.

Saludos!

roman 15-03-2017 17:14:44

Cita:

Empezado por Lepe (Mensaje 514356)
El cálculo que hace delphi es correcto.

El problema es que toma un estimado del número de días por mes,

Código Delphi [-]
var
  ApproxDaysPerMonth: Double = 30.4375;

y como febrero tiene 28 días, el resultado es erróneo pues incluso entre 2017/02/01 y 2017/03/03 marca 0 meses cuando ha pasado un mes y dos días.

LineComment Saludos

Lepe 16-03-2017 14:04:22

auch!! Eso duele ;)


La franja horaria es GMT +2. Ahora son las 05:10:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi