vtdeleon
13-02-2006, 03:24:52
Saludos
He estado desarrollando una aplicacion en la que uso las funciones MonthBetween, YearsBetween y WeeksBetween.
El ultimo no da problema alguno, pues sea como sea sera un multiplo de 7, a diferencia de las 2 primeras.
Y es que este mes (Feb) solo tiene 28 dias, y mediante el sistema he querido saber cuantos meses hay entre el 12/02/06 y el 13/04/06. Me he quedado anodado con la respuesta, pues me dice que solo tiene 1 mes:eek:.
He fundido por completo mi cerebro buscando donde demonios esta el error en mi codigo. Buscando y buscando, horas y horas sin pestañar, me he encontrado con la sorpresa de que no es mi codigo, sino el codigo de Delphi, pues este hace el calculo por un aproximado.:mad:
DateUtils
var
{BDS2006}
{ average over a 4 year span }
ApproxDaysPerMonth: Double = 30.4375;
ApproxDaysPerYear: Double = 365.25;
Estoy sorprendido con esto. No existe exactitud usando las funciones mencionadas mas arriba!
Esto quiere decir que desde el 12 de feb 2006 al 13 de marz 2006 no hay un mes para Delphi.
Por que no usar DaysInMonth y DaysInYears?, y no hacer esos aproximados tan feo, tan barbaros. Aunque seria un poquito mas largo el codigo interno, pero YO arriesgaria espacio por exactitud.
A consecuencia de esto, he decido hacer mi propia funcion para hacer esto, pues ahora no confio en lo absoluto en estas funciones. Y quien sabe que otras funciones no son exactas.
He estado desarrollando una aplicacion en la que uso las funciones MonthBetween, YearsBetween y WeeksBetween.
El ultimo no da problema alguno, pues sea como sea sera un multiplo de 7, a diferencia de las 2 primeras.
Y es que este mes (Feb) solo tiene 28 dias, y mediante el sistema he querido saber cuantos meses hay entre el 12/02/06 y el 13/04/06. Me he quedado anodado con la respuesta, pues me dice que solo tiene 1 mes:eek:.
He fundido por completo mi cerebro buscando donde demonios esta el error en mi codigo. Buscando y buscando, horas y horas sin pestañar, me he encontrado con la sorpresa de que no es mi codigo, sino el codigo de Delphi, pues este hace el calculo por un aproximado.:mad:
DateUtils
var
{BDS2006}
{ average over a 4 year span }
ApproxDaysPerMonth: Double = 30.4375;
ApproxDaysPerYear: Double = 365.25;
Estoy sorprendido con esto. No existe exactitud usando las funciones mencionadas mas arriba!
Esto quiere decir que desde el 12 de feb 2006 al 13 de marz 2006 no hay un mes para Delphi.
Por que no usar DaysInMonth y DaysInYears?, y no hacer esos aproximados tan feo, tan barbaros. Aunque seria un poquito mas largo el codigo interno, pero YO arriesgaria espacio por exactitud.
A consecuencia de esto, he decido hacer mi propia funcion para hacer esto, pues ahora no confio en lo absoluto en estas funciones. Y quien sabe que otras funciones no son exactas.