[ Foro de Pascal ]

Algoritmo para contar el tiempo.

05-Dec-2011 01:22
Luis Torres (+18)
8 Respuestas

Alguien me podría ayudar con un algoritmo que tenga como salida el número de días que hay desde una fecha que el usuario introduzca hasta el presente?. Gracias.


05-Dec-2011 05:13
Jose Torres

Hola! Tanto Object Pascal como Free Pascal tienen funciones que te permiten manejar fechas con mucha facilidad.
La función DaysBetween pertenece a la unidad dateUtils y se usa así:


 dias := DaysBetween(FechaInicial, FechaFinal)


donde dias es una variable entera.

Si no podés usar esta función, por limitaciones de cualquier tipo, podrías hacer algo muy sencillo:


function contardias( FechaInicial, Fechafinal: TDate): Integer;
var
  dias: integer;
begin
dias := 0;  

while FechaInicial+dias < FechaFinal do inc(dias);

Result := dias;
end;


Esta función te devuelve los días entre fechas :)


05-Dec-2011 16:05
Luis Torres (+18)

Muchas gracias por responder y tan rápido. Lo que sucede es que no tengo que utilizar objetos para hacer el programa. Además, debo programar en Turbo Pascal. ¿Si alguien tiene otra sugerencia se lo agradecería?, no tienen que hacerme el trabajo, sólo necesito el algoritmo.


05-Dec-2011 16:44
Jose Torres

Luis, no tengo mucha experiencia con Turbo, pero lo siguiuente debería funcionar,


function contardias( FechaInicial, Fechafinal: TDate): Integer;
var
  dias: integer;
begin
dias := 0; 

while FechaInicial+dias < FechaFinal do begin
 dias := dias+1;
end;
Result := dias;
end;


aquí no estoy usando ni objetos ni funciones. Ojalá te sirva.


05-Dec-2011 20:49
Luis Torres (+18)

Pero el tipo TDate no está definido en freePascal. Gracias.


08-Dec-2011 20:57
Sam Garcia

me gustaria saber cual es el nombre exacto de la Unit que estan utilizando para tener esas funciones.
Gracias !! Saludos


09-Dec-2011 01:55
Luis Torres (+18)

Yo también quiero saber. Gracias.


15-Dec-2011 10:49
Nacho Cabanes (+83)

Si usáis Free Pascal, tenéis varias funciones básicas de acceso a la fecha y hora del sistema:

http://www.freepascal.org/docs-html/rtl/sysutils/datetimeroutines.html

y toda una "unit" llamada "dateutils" que permite hacer cosas como restar fechas (el "DaysBetween" que comentaba José Torres):

http://www.freepascal.org/docs-html/rtl/dateutils/index-5.html

Si tenéis que hacerlo a mano, bien sea porque uséis un compilador más antiguo o porque queráis practicar cuestiones de algorítmica, la situación se complica un poco, porque tendréis que crearos vuestro tipo "fecha" (día, mes, año) y "pensar" cómo restar fechas, teniendo en cuenta que cada mes tiene una longitud distinta y que además si se atraviesa un año bisiesto, febrero tendrá otra duración diferente.


16-Dec-2011 02:47
Luis Torres (+18)

Quería hacerlo a mano, para practicar con algoritmos. Así gano destreza. Gracias por los links que me pasastes. Eres muy amable. Yo uso Turbo Pascal, pero también tengo Free Pascal y no me molesta usar este último. Gracias de nuevo.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)