Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Temas relacionados > Debates
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-02-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Thumbs down MonthBetweens - Dudar del Resultado

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.

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.
DateUtils
Código Delphi [-]
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.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #2  
Antiguo 13-02-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. Si uno busca en la ayuda de Delphi sobre la función "MonthsBetween" esto es lo que se encuentra, primeramente:

Cita:
Empezado por Ayuda de Delphi
Returns the approximate number of months between two specified TDateTime values.
Y, a continuación, en la descripción de la misma función, lo siguiente:

Cita:
Empezado por Ayuda de Delphi
Call MonthsBetween to obtain the difference, in months, between two TDateTime values. Because months are not all the same length, MonthsBetween returns an approximation based on an assumption of 30.4375 days per month. Fractional months are not counted. Thus, for example, MonthsBetween reports the difference between Feb 1 and Mar 1 as 0.
Es decir, que, somos nosotros los que nos llevamos a engaño, pero en la ayuda de Delphi se deja claro que el resultado se dará por aproximación.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problema con resultado de SP Choclito Firebird e Interbase 0 01-02-2006 20:21:12
resultado en nodos (cxGrid) solo me aperese el primero del select, relacion columna = sakuragi OOP 1 29-07-2005 17:17:55
Resultado de un query en Delphi MRang14 SQL 3 18-11-2004 00:49:57
Meter el resultado de un quey en una variable. SaLvaGe SQL 7 04-10-2004 09:01:08
Resultado de Count en SQL MRang14 SQL 2 05-03-2004 19:42:47


La franja horaria es GMT +2. Ahora son las 04:03:14.


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
Copyright 1996-2007 Club Delphi