git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES/trunk@4 b68bf8ae-e977-074f-a058-3cfd71dd8f45
230 lines
6.0 KiB
ObjectPascal
230 lines
6.0 KiB
ObjectPascal
{
|
|
===============================================================================
|
|
Copyright (©) 2002. Rodax Software.
|
|
===============================================================================
|
|
Los contenidos de este fichero son propiedad de Rodax Software titular del
|
|
copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
|
|
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
|
|
acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
|
|
bajo el que se suministra.
|
|
-----------------------------------------------------------------------------
|
|
Web: www.rodax-software.com
|
|
===============================================================================
|
|
Fecha primera versión: 01-11-2002
|
|
Versión actual: 1.0.0
|
|
Fecha versión actual: 01-11-2002
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
===============================================================================
|
|
}
|
|
|
|
unit DateFunc;
|
|
|
|
interface
|
|
|
|
const
|
|
FECHA_NULA: TDateTime = {-693594} 0;
|
|
|
|
{ Funciones de fecha y hora }
|
|
function EsMes(Mes : string) : Boolean;
|
|
function EsDia(Dia : string) : Boolean;
|
|
function EsFechaValida(ADate: TDateTime): Boolean; overload;
|
|
function EsFechaValida(ADate: string): Boolean; overload;
|
|
function DarFormatoInterbaseFecha(ADate: string): string;
|
|
function DarDiasPorMes(AYear, AMonth: Integer): Integer;
|
|
function DarMes(Mes: Integer): string;
|
|
function EsFechaNula(Fecha : TDateTime) : Boolean;
|
|
function DarDiaInicioMesStr : string;
|
|
function DarDiaInicioMesDat : TDateTime;
|
|
function DarDiaInicioAnoStr : string;
|
|
function DarDiaInicioAnoDat : TDateTime;
|
|
|
|
function DarDiaInicioMes(Fecha : string) : string; overload;
|
|
function DarDiaFinalMesStr : string;
|
|
function DarDiaFinalMesDat : TDateTime;
|
|
function DarDiaFinalMes(Fecha : string) : string; overload;
|
|
|
|
function DarDiaInicioAno(Fecha : string) : string; overload;
|
|
function DarDiaFinalAnoStr : string;
|
|
function DarDiaFinalAnoDat : TDateTime;
|
|
function DarDiaFinalAno(Fecha : string) : string; overload;
|
|
|
|
function DarAno(Fecha: String): Integer;
|
|
|
|
implementation
|
|
|
|
uses
|
|
StrFunc, SysUtils;
|
|
|
|
|
|
function EsMes(Mes : String) : Boolean;
|
|
begin
|
|
Result := False;
|
|
if EsCadenaVacia(Mes) then
|
|
Exit;
|
|
|
|
if not EsNumerico(Mes) then
|
|
Exit;
|
|
|
|
if (StrToInt(Mes) > 12) or (StrToInt(Mes) < 1) then
|
|
Exit;
|
|
|
|
Result := True;
|
|
end;
|
|
|
|
function EsDia(Dia : String) : Boolean;
|
|
begin
|
|
Result := False;
|
|
if EsCadenaVacia(Dia) then
|
|
Exit;
|
|
|
|
if not EsNumerico(Dia) then
|
|
Exit;
|
|
|
|
if (StrToInt(Dia) > 31) or (StrToInt(Dia) < 1) then
|
|
Exit;
|
|
|
|
Result := True;
|
|
end;
|
|
|
|
function EsFechaValida(ADate: TDateTime): Boolean;
|
|
var
|
|
Year, Month, Day: Word;
|
|
begin
|
|
try
|
|
DecodeDate(ADate, Year, Month, Day);
|
|
Result := (Year >= 1) and (Year <= 9999) and (Month >= 1) and (Month <= 12) and
|
|
(Day >= 1) and (Day <= DarDiasPorMes(Year, Month));
|
|
except
|
|
Result := False;
|
|
end;
|
|
end;
|
|
|
|
function EsFechaValida(ADate: String): Boolean;
|
|
begin
|
|
if EsCadenaVacia(ADate) then
|
|
Result := False
|
|
else begin
|
|
try
|
|
Result := EsFechaValida(StrToDate(ADate));
|
|
except
|
|
Result := False;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function DarFormatoInterbaseFecha(ADate: String): String;
|
|
begin
|
|
result := FormatDateTime('dd.mm.yyyy', StrToDate(ADate));;
|
|
end;
|
|
|
|
function EsFechaNula(Fecha : TDateTime) : Boolean;
|
|
begin
|
|
Result := (Fecha = FECHA_NULA);
|
|
end;
|
|
|
|
function DarDiasPorMes(AYear, AMonth: Integer): Integer;
|
|
const
|
|
DaysInMonth: array[1..12] of Integer =
|
|
(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
|
|
begin
|
|
Result := DaysInMonth[AMonth];
|
|
if (AMonth = 2) and IsLeapYear(AYear) then Inc(Result); { Años bisiestos }
|
|
end;
|
|
|
|
function DarMes(Mes: Integer): String;
|
|
const
|
|
Meses: array[1..12] of String =
|
|
('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto',
|
|
'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
|
|
begin
|
|
Result := Meses[Mes];
|
|
end;
|
|
|
|
function DarDiaInicioMesStr : string;
|
|
begin
|
|
Result := DarDiaInicioMes(DateToStr(Date));
|
|
end;
|
|
|
|
function DarDiaInicioMesDat : TDateTime;
|
|
begin
|
|
Result := StrToDate(DarDiaInicioMes(DateToStr(Date)));
|
|
end;
|
|
|
|
function DarDiaInicioAnoStr : string;
|
|
begin
|
|
Result := DarDiaInicioAno(DateToStr(Date));
|
|
end;
|
|
|
|
function DarDiaInicioAnoDat : TDateTime;
|
|
begin
|
|
Result := StrToDate(DarDiaInicioAno(DateToStr(Date)));
|
|
end;
|
|
|
|
function DarDiaInicioMes (Fecha : string) : string;
|
|
var
|
|
Year, Month, Day : Word;
|
|
begin
|
|
DecodeDate (StrToDate(Fecha), Year, Month, Day);
|
|
Result := Format('%.2d/%.2d/%.4d', [1, Month, Year]);
|
|
end;
|
|
|
|
function DarDiaFinalMesStr : string;
|
|
begin
|
|
Result := DarDiaFinalMes(DateToStr(Date));
|
|
end;
|
|
|
|
function DarDiaFinalMesDat : TDateTime;
|
|
begin
|
|
Result := StrToDate(DarDiaFinalMes(DateToStr(Date)));
|
|
end;
|
|
|
|
function DarDiaFinalMes (Fecha : string) : string;
|
|
var
|
|
Year, Month, Day : Word;
|
|
begin
|
|
DecodeDate (StrToDate(Fecha), Year, Month, Day);
|
|
Day := DarDiasPorMes(Year, Month);
|
|
Result := Format('%.2d/%.2d/%.4d', [Day, Month, Year]);
|
|
end;
|
|
|
|
function DarDiaInicioAno (Fecha : string) : string;
|
|
var
|
|
Year, Month, Day : Word;
|
|
begin
|
|
DecodeDate (StrToDate(Fecha), Year, Month, Day);
|
|
Result := Format('%.2d/%.2d/%.4d', [1, 1, Year]);
|
|
end;
|
|
|
|
function DarDiaFinalAnoStr : string;
|
|
begin
|
|
Result := DarDiaFinalAno(DateToStr(Date));
|
|
end;
|
|
|
|
function DarDiaFinalAnoDat : TDateTime;
|
|
begin
|
|
Result := StrToDate(DarDiaFinalAno(DateToStr(Date)));
|
|
end;
|
|
|
|
function DarDiaFinalAno (Fecha : string) : string;
|
|
var
|
|
Year, Month, Day : Word;
|
|
begin
|
|
DecodeDate (StrToDate(Fecha), Year, Month, Day);
|
|
Day := DarDiasPorMes(Year, 12);
|
|
Result := Format('%.2d/%.2d/%.4d', [Day, 12, Year]);
|
|
end;
|
|
|
|
function DarAno(Fecha: String): Integer;
|
|
var
|
|
Year, Month, Day : Word;
|
|
begin
|
|
DecodeDate (StrToDate(Fecha), Year, Month, Day);
|
|
Result := Year;
|
|
end;
|
|
|
|
end.
|