Tipo TDateTime
Unit System
type TDateTime = type Double;
Es un número real.
La parte entera representa los días transcurridos desde
el 30/12/1899
La parte decimal representa la hora como una fracción
del día.
Ej : 1 hora = 1 / 24
1 min = 1 / (24*60)
Tipo TDateTime
Ejemplos:
0 30/12/1899 12:00 am
2.75 01/01/1900 6:00 pm
-1.25 29/12/1899 6:00 am
35065 01/01/1996 12:00 am
Dos días después de la Fracción del día:
fecha anterior 18 hs * 1/24 = 0.75
Tipo TDateTime
¿Cómo se obtiene el día siguiente de una fecha
dada?
Ej : 11-04-2005 es el número 38453
DateToStr(StrToDate(’11/04/2005’)+1)
38453
Conversiones
StrToDate(’11/04/2005’) 38453
DateToStr(38454) ’12/04/2005’
DecodeDate(38454, anio,mes,dia);
EncodeDate(2005, 04, 11) 38453
Tipo TDateTime
Sabiendo que 18 hs 30 min 36 seg 0.77125
20 hs 30 min 36 seg ?
0.77125 + 2/24
18 hs 37 min 36 seg 0.77125 + 7 / (24*60)
Conversiones
StrToTime(’[Link]’) 0.77125
TimeToStr(0.77125) ’[Link]’
Ver DecodeTime y EncodeTime
Formato de conversión
(variables globales)
ShortDateFormat
Ej: ShortDateFormat := 'dd/mm/yyyy';
LongTimeFormat
Ej : LongTimeFormat := 'hh:mm:ss';
Var Nro : TDateTime;
begin
ShortDateFormat := 'dd/mmm/yyyy';
writeln( DateToStr(38453) );
write('Ingrese un [Link] : ');
readln(Nro);
writeln('Fecha = ', DateTimeToStr(nro));
writeln('Dia Siguiente : ', DateTimeToStr(nro+1));
writeln('Dia anterior : ', DateToStr(nro-1));
LongTimeFormat := 'hh:mm';
writeln('Hora siguiente : ', TimeToStr(nro+1/24));
LongTimeFormat := 'h';
writeln('Hora anterior : ', TimeToStr(nro - 1/24));
end.
Componente Timer
Timer (Paleta System)
Permite ejecutar una acción (indicada
en el envento OnTimer) según una
frecuencia de tiempo especificada.
Componente Timer
Propiedades
Enabled
Arranca y detiene el reloj seteando su valor en
TRUE o FALSE respectivamente.
Interval
Indica la frecuencia en milisegundos con la cual
el evento OnTimer se dispara.
Evento OnTimer
Escriba aquí el proceso que desea que se
ejecute con la frecuencia indicada.
[Link]
Se desea desarrollar una aplicación que
muestre la hora actualizada.
Deshabilitar el reloj
Habilitar
el reloj
La propiedad caption de este Label se actualiza
a través de una componente Timer.
[Link]
Propiedades del Timer seteadas desde el inspector de
objetos:
Enabled := false; {inicialmente está detenido}
Interval := 1000; {se activará cada 1000 mseg = 1seg}
Evento OnTimer
Esto es lo que se hace cada 1000 mseg (valor de la
propiedad interval):
procedure TForm1.Timer1Timer(Sender: TObject);
begin
[Link] := TimeToStr(Time);
end;
Hora actual
Ver en el Help todas las rutinas que
existen para manejo de fecha y hora.
[Link]
Se desea desarrollar un cronómetro que
registre los segundos transcurridos.
Calcular la hora en función de los segundos que
se deseen visualizar.
[Link] segundos transcurridos
Agregar a la clase del formulario
private
{ Private declarations }
segundos : longint;
Onclick del botón Comenzar
procedure [Link](Sender: TObject);
begin
segundos := 0;
[Link] := TimeToStr(0);
[Link] := true;
end;
Evento OnTimer
Cómo mostrar la cantidad de segundos transcurridos?
Armando el string en forma manual.
Calcular el número real (valor entre 0 y 1) que represente la
cantidad de segundos transcurridos y utilizar la función
TimeToStr para construir el string.
Vamos a implementar la segunda opción.
Evento OnTimer
Ejemplos:
0 es el inicio del día
0,5 representa las 12 del mediodía.
0,75 equivale a las 6 de la tarde. Han transcurrido las ¾
partes del día.
¿Cómo calcular el valor para una cantidad de
segundos dada?
Evento OnTimer
Si el valor 1 corresponde al día completo (24 hs), la
fracción correspondiente a 1 segundo será
1
24 * 60 * 60
Por lo tanto, si segundos representa la cantidad de
segundos transcurridos, el valor real a utilizar será:
segundos
24 * 60 * 60
Evento OnTimer
procedure TForm1.Timer1Timer(Sender: TObject);
begin
segundos := segundos + 1;
(* construir un número real de la forma
(cant. de segundos) * (fracción del día en segundos) *)
[Link] := TimeToStr(segundos / (24*60*60));
end;