Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   No encuentro la forma de restar fechas (https://www.clubdelphi.com/foros/showthread.php?t=63796)

pablopessoa 03-03-2009 15:20:50

No encuentro la forma de restar fechas
 
Hola a todos!!
El problema en si no es restar la fecha... es que no encuentro una funcion que se comporte como necesito..
Es para un sistema de licencias para mi aplicacion, yo necesito restar la fecha de limite de uso que tiene la aplicacion con la fecha actual para saber si esta usandolo dentro de los dias "permitidos" por la licencia.
Yo actualmente uso la funcion DaysBetween(fechaLimite,fechaActual) , pero esta funcion siempre retorna un entero y eso no me sirve. Osea , con un ejemplo:

DaysBetween(30/01/2009,01/01/2009) = 30
DaysBetween(01/01/2009,30/01/2009) = 30

el en primer caso esta bien que devuelva 30, pero en el segundo necesito que me retorne -30, asi de ese modo se que se paso de la fecha de la licencia.
Espero haberme explicado bien, sino me dicen y trato de explicar mejor
Si alguien me puede recomendar una forma de hacerlo se los agradeceria mucho
Saludos!!!

Caro 03-03-2009 15:51:04

Hola pablopessoa, despues de obtener el numero de días con DaysBetween, comparas tus fechas, podría ser con la función CompareDate, si la fecha limite es menor a la fecha actual, al resultado del DayBetween lo conviertes en negativo multiplicando por -1.

Saluditos

pablopessoa 03-03-2009 15:56:18

Hola caro , gracias por responder.
No es necesario tener el numero en negativo.. solo busco una forma de saber si la fecha actual es menor , igual o mayor a la del limite de la licencia.
Lo que pasa es que antes restaba las fechas, pero tenia errores eso, por que , por ejemplo, si estaba en el dia 1/12/2008 y hacia algo como (15/1/2009 - 01/12/2008) me daba el resultado en negativo, cuando no deberia si 15/01/2009 es mayor, me explico?
Pero me llamo la atencion lo de la funcion CompareDate, me podras explicar un poquito como se usa o que retorna?
Muchas Gracias!!

ContraVeneno 03-03-2009 16:06:02

Cita:

Empezado por pablopessoa (Mensaje 339993)
.. solo busco una forma de saber si la fecha actual es menor , igual o mayor a la del limite de la licencia.

¿y para que necesitas restar fechas si solo buscas eso?

Con un "If TuFecha > Now then showmessage('fecha mayor');" sería suficiente, ¿no? :confused:

DaysBetween solo considera los días completos, tal vez a eso se deba "los errores" que mencionas. Es decir, la función DaysBetween(1900-01-01 00:00:00, 1900-01-01 23:59:59) te va a regresar 0 porque le falta un segundo para completar el día. Si quieres con fracciones, deberías utilizar DaySpan.

Y finalmente, para conocer todos los detalles de daysbetween, dayspan y comparedate, lo mejor que puedes hacer es presionar F1 en delphi y revisar la ayuda sobre estas funciones, la cuál está muy completa y hasta ejemplos vas a encontrar.

Caro 03-03-2009 16:31:52

Cita:

Empezado por pablopessoa (Mensaje 339993)
Pero me llamo la atencion lo de la funcion CompareDate, me podras explicar un poquito como se usa o que retorna?
Muchas Gracias!!

Hola de nuevo pablo, como te dijo contraveneno, no necesitas restar la fechas, con una comparación fechalimite>fechaActual ya te valdría, sobre la función CompareDate recibe como parametro dos fechas y te devuelve -1 si la primera fecha es menor que la segunda, 0 si son iguales y 1 si la primera es mayor que la segunda.

Código Delphi [-]
  if CompareDate(FechaActual, FechaLimite)=1 then
   showmessage('La fecha actual es mayor a la fecha limite');

Saluditos

pablopessoa 03-03-2009 23:47:27

Muchas Gracias por ayudarme!!
Tanto una solucion como la otra me vienen muy bien, ya me parecia que tenia que ser algo simple y que para variar yo la estaba complicando demasiado...
Gracias nuevamente y saludos!


La franja horaria es GMT +2. Ahora son las 12:05:57.

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