Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cuenta atrás. (https://www.clubdelphi.com/foros/showthread.php?t=22995)

alfredosg19 03-07-2005 23:32:35

Cuenta atrás.
 
¡Hola a todos!, estoy haciendo una pequeña aplicación personal para añadir a otros programas, se trata de calcular el tiempo que queda para una fecha o el tiempo que pasa desde una fecha. El problema es que con las funciones de Delphi DaysBetween por ejemplo puedo calcular los días que faltan para que llegue la cita, con YearsBetween puedo calcular los años que faltan... Pero lo que quiero es que me salga el mensaje "Faltan 3 años, 4 meses, 4 días" por ejemplo. Y no me vale calcular los segundos que quedan con la función daysBetween y multplicarlo por 30, porque ¿y si estamos en un més con 31?¿y si ese año es bisiesto?.
He hecho un array con los meses del año y una función que calcula si estamos en un año bisiesto o no, ¿alguien tiene alguna idea?. Muchas gracias.

Lepe 04-07-2005 10:42:34

Simplemente restamos las dos fechas y listo, que delphi se encargue de los problemas.

Unicamente tenemos que controlar los años a mano, ya que la resta de fechas nos da el año base 1900, que obviamente no es el valor que queremos.

Código Delphi [-]
  d,d1:TDateTime;
  years:Double;
begin

  d := encodedatetime(2006,5,12,10,0,0,0);
  d1 := d-Now;
  years := YearsBetween(d,Now);
  Memo1.Lines.Add(FloatToStr(years)+' años '+IntToStr(MonthOf(d1))
+' meses  y '+ IntToStr(dayof(d1))+ ' dias' );

raiden1813 20-08-2010 00:06:29

Cita:

Empezado por Lepe (Mensaje 95407)
Simplemente restamos las dos fechas y listo, que delphi se encargue de los problemas.

Unicamente tenemos que controlar los años a mano, ya que la resta de fechas nos da el año base 1900, que obviamente no es el valor que queremos.

Código Delphi [-]
  d,d1:TDateTime;
  years:Double;
begin

  d := encodedatetime(2006,5,12,10,0,0,0);
  d1 := d-Now;
  years := YearsBetween(d,Now);
  Memo1.Lines.Add(FloatToStr(years)+' años '+IntToStr(MonthOf(d1))
+' meses  y '+ IntToStr(dayof(d1))+ ' dias' );

Hey gracias me sirvio de mucho este pequeño codigo, gracias men!


La franja horaria es GMT +2. Ahora son las 19:34:32.

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