Para la mayoría de funciones tenemos que añadir la unidad DateUtils:
uses
Windows, Messages, ..., DateUtils;
Veamos entonces que funciones nos pueden ser útiles para ello:
function DayOfTheMonth( const AValue: TDateTime ): Word;
Esta función extrae el número de día de una fecha en concreto sin tener que utilizar la función DecodeDate. Por ejemplo:
var Fecha: TDate;
begin
Fecha := StrToDate( '23/08/2007' );
ShowMessage( IntToStr( DayOfTheMonth( Fecha ) ); // muestra 23
end;
function DayOfTheWeek( const AValue: TDateTime ): Word;
Nos díce en que día de la semana (1-7) cae una fecha en concreto (el primer día es el Lunes, al contrario de otras funciones de fecha y hora donde el primer día es el Domingo). Por ejemplo:
Fecha := StrToDate( '5/08/2007' );
ShowMessage( IntToStr( DayOfTheWeek( Fecha ) ) ); // devuelve 7 (Domingo)
Fecha := StrToDate( '10/08/2007' );
ShowMessage( IntToStr( DayOfTheWeek( Fecha ) ) ); // devuelve 5 (Viernes)
Fecha := StrToDate( '23/08/2007' );
ShowMessage( IntToStr( DayOfTheWeek( Fecha ) ) ); // devuelve 4 (Jueves)
function DayOfWeek( Date: TDateTime ): Integer;
Esta función es igual a la función DayOfTheWeek con la diferencia de que el primer día de la semena es el Domingo. Por ejemplo:
Fecha := StrToDate( '5/08/2007' );
ShowMessage( IntToStr( DayOfWeek( Fecha ) ) ); // devuelve 1 (Domingo)
Fecha := StrToDate( '10/08/2007' );
ShowMessage( IntToStr( DayOfWeek( Fecha ) ) ); // devuelve 6 (Viernes)
Fecha := StrToDate( '23/08/2007' );
ShowMessage( IntToStr( DayOfWeek( Fecha ) ) ); // devuelve 5 (Jueves)
function DayOfTheYear( const AValue: TDateTime ): Word;
Al pasarle una fecha nos devuelve el número de día que corresponde a lo largo del año. Por ejemplo:
Fecha := StrToDate( '5/08/2007' );
ShowMessage( IntToStr( DayOfTheYear( Fecha ) ) ); // devuelve 217
Fecha := StrToDate( '10/08/2007' );
ShowMessage( IntToStr( DayOfTheYear( Fecha ) ) ); // devuelve 222
Fecha := StrToDate( '23/08/2007' );
ShowMessage( IntToStr( DayOfTheYear( Fecha ) ) ); // devuelve 235
function DaysBetween( const ANow, AThen: TDateTime ): Integer;
Devuelve el número de días que hay entre las fechas ANow y AThen. Por ejemplo:
var
Fecha1, Fecha2: TDate;
begin
Fecha1 := StrToDate( '10/08/2007' );
Fecha2 := StrToDate( '23/08/2007' );
ShowMessage( IntToStr( DaysBetween( Fecha1, Fecha2 ) ) ) ; // devuelve 13
end;
function DaysInMonth( const AValue: TDateTime ): Word;
Nos dice cuantos días tiene el mes que le pasamos como fecha. Por ejemplo:
DaysInMonth( StrToDate( '01/01/2007' ) ) devuelve 31
DaysInMonth( StrToDate( '01/02/2007' ) ) devuelve 28
DaysInMonth( StrToDate( '01/04/2007' ) ) devuelve 30
function DaysInYear( const AValue: TDateTime ): Word;
Nos dice el número de días que tiene un año según la fecha que le pasamos. Por ejemplo:
DaysInYear( StrToDate( '01/01/2007' ) ) devuelve 365
function DaySpan( const ANow, AThen: TDateTime): Double;
Devuelve el número de días de diferencia entre dos fechas y horas incluyendo la parte fraccional. Por ejemplo:
var
FechaHora1, FechaHora2: TDateTime;
begin
FechaHora1 := StrToDateTime( '10/08/2007 13:00' );
FechaHora2 := StrToDateTime( '23/08/2007 19:00' );
ShowMessage( FloatToStr( DaySpan( FechaHora1, FechaHora2 ) ) ); // devuelve 13,25
end;
procedure DecodeDate( Date: TDateTime; var Year, Month, Day: Word );
Este procedimiento convierte un valor de fecha TDate en valores enteros para el año, mes y día. Por ejemplo:
var
wAnyo, wMes, wDia: Word;
begin
DecodeDate( StrToDate( '23/08/2007' ), wAnyo, wMes, wDia );
Memo.Lines.Add( 'Día: ' + IntToStr( wDia ) );
Memo.Lines.Add( 'Mes: ' + IntToStr( wMes ) );
Memo.Lines.Add( 'Año: ' + IntToStr( wAnyo ) );
end;
Al ejecutarlo mostraría en el campo memo:
Día: 23
Mes: 8
Año: 2007
procedure DecodeTime( Time: TDateTime; var Hour, Min, Sec, MSec: Word );
Este procedimiento convierte un valor de hora TTime en valores enteros para la hora, minutos, segundos y milisegundos. Por ejemplo:
var
wHora, wMinutos, wSegundos, wMilisegundos: Word;
begin
DecodeTime( StrToTime( '14:25:37' ), wHora, wMinutos, wSegundos, wMilisegundos );
Memo.Lines.Add( IntToStr( wHora ) + ' horas' );
Memo.Lines.Add( IntToStr( wMinutos ) + ' minutos' );
Memo.Lines.Add( IntToStr( wSegundos ) + ' segundos' );
Memo.Lines.Add( IntToStr( wMilisegundos ) + ' milisegundos' );
end;
Al ejecutar este código mostraría:
14 horas
25 minutos
37 segundos
0 milisegundos
En el siguiente artículo seguiremos con más funciones para fecha y hora.
Pruebas realizadas en Delphi 7.
No hay comentarios:
Publicar un comentario