Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Duda con la función daysbetween (https://www.clubdelphi.com/foros/showthread.php?t=86492)

grandzon 20-08-2014 15:49:40

Duda con la función daysbetween
 
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

Código Delphi [-]
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

Duda con la función daysbetween
 
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

Código Delphi [-]
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 ^\||/


La franja horaria es GMT +2. Ahora son las 01:55:19.

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