PDA

Ver la Versión Completa : Duda con la función daysbetween


grandzon
20-08-2014, 15:49:40
Hola compañer@s

Discúlpen pero tengo una duda sobre el funcionamiento de la función "DaysBetween" usada en Delphi XE3... sucede que cuando intento el número de días entre una fecha pasada y la fecha actual me retorna, efectivamente, los días entre una y otra como entero simple (ej. 10, 20, 30 etc.); cuando intento aplicar esta función con una fecha futura me devuelve de igual manera un entero positivo (ej. 10, 20, 30 etc.)... ¿no debería ser en ese caso un negativo?

Explicado de la manera como lo programo y los valores que recibo


datetimepicker1.date:=miventanaprincipal.mitabla['fecha']; //no hago conversión de variables pues el campo "fecha" en la tabla es tipo "fecha/hora"
daysbetween(datetimepicker1.date, date); //datetimepicker1 fecha:='09/14/2014' y la fecha actual de la máquina:='08/20/2014"
//pero el valor que recibo es un entero positivo ¿no debería ser algo como '-10'?


Uso la IDE Rad Studio XE3 para Delphi.
la base de datos es access 2010.

roman
20-08-2014, 16:41:15
No veo porqué tendría que ser negativo ya que sólo se trata del número de días entre dos fechas. La distancia entre tu casa y mi casa es la misma sin importar desde donde la midas. Lo mismo sucede con las fechas.

// Saludos

grandzon
20-08-2014, 17:43:33
Hola roman lo que sucede es lo siguiente:

Estoy desarrollando una aplicación para control de préstamos y en una parte toma en cuenta los días que lleva de atraso el cliente en el pago de la cuota, el usuario declara el número de días de atraso en los que empezará a correr la mora (pe. 3 días), realizo una comparación entre ese valor y el que me devuelve la función DaysBetween, si es mayor que 3 me realiza el cálculo de la mora que se sumaría al monto de la cuota a pagar de esta manera


DiasdeAtraso, DiasaTomarenCuenta: integer;
...
DiasdeAtraso:=DaysBetween(datetimepicker1, date);
if DiasdeAtraso>DiasaTomarenCuenta then //me calcula la mora


por lo tanto me sería conveniente que si comparo una fecha futura me devuelva un número negativo para que la mora sea := 0;

Me inicié hace poco en la programación y por más que he buscado en la web no encuentro respuesta.

roman
20-08-2014, 18:08:27
No entiendo muy bien lo que dices pero intuyo que puede ayudarte la función CompareDate de la unidad DateUtils, que te devuelve -1, 0 o 1 dependiendo de si la primera fecha es anterior, igual o posterior a la segunda.

// Saludos

grandzon
20-08-2014, 18:16:02
Gracias! roman, exactamente algo como eso necesito ^\||/