Último dia do mês
Preciso saber qual último dia do mês de uma determinada data.
Se alguém puder me ajudar agradeço.
Obrigado, Ricardo
Se alguém puder me ajudar agradeço.
Obrigado, Ricardo
Ricardo_ascii
Curtidas 0
Respostas
Rodc
24/11/2004
[color=darkred:d9ea850ec5]function UltimoDia(Mes, Ano: string): integer;
var dDia, dMes, dAno: Word;
data: TDateTime;
begin
dDia := 01;
dAno := StrToInt(Ano);
dMes := StrToInt(Mes);
Result := 0;
if (dMes = 0) or (dAno = 0) then exit;
dMes := dMes + 1;
if dMes = 13 then
begin
dMes := 12;
dAno := sAno - 1;
end;
data := EncodeDate(dAno, dMes, dDia) - 1;
DecodeDate(data, dAno, dMes, Result);
end;[/color:d9ea850ec5]
var dDia, dMes, dAno: Word;
data: TDateTime;
begin
dDia := 01;
dAno := StrToInt(Ano);
dMes := StrToInt(Mes);
Result := 0;
if (dMes = 0) or (dAno = 0) then exit;
dMes := dMes + 1;
if dMes = 13 then
begin
dMes := 12;
dAno := sAno - 1;
end;
data := EncodeDate(dAno, dMes, dDia) - 1;
DecodeDate(data, dAno, dMes, Result);
end;[/color:d9ea850ec5]
GOSTEI 0
Placido
24/11/2004
Copiei esta função no meu projeto e está dando erro na linha abaixo, tem
que incluir alguma classe na clausula user para funcionar :?: :?: :?:
DecodeDate(data, dAno, dMes, Result);
Grato
Plácido
que incluir alguma classe na clausula user para funcionar :?: :?: :?:
DecodeDate(data, dAno, dMes, Result);
Grato
Plácido
GOSTEI 0
Marco Salles
24/11/2004
Copiei esta função no meu projeto e está dando erro na linha abaixo, tem
que incluir alguma classe na clausula user para funcionar
DecodeDate(data, dAno, dMes, Result);
Grato
Se nao me a unit Da Procedure DecodeDate e [b:f7626f935d]Sysutils[/b:f7626f935d]
GOSTEI 0
Rodc
24/11/2004
Não, eu que fiz errado a função.
DecodeDate retorna Word e o result da função é integer.
Copie novamente.
Daí você pode implementar, caso queira, para que o parâmetro da função ao invés de string seja integer ou uma data mesmo.
DecodeDate retorna Word e o result da função é integer.
Copie novamente.
function UltimoDia(Mes, Ano: string): integer; var dDia, dMes, dAno: Word; data: TDateTime; begin dDia := 01; dAno := StrToInt(Ano); dMes := StrToInt(Mes); Result := 0; if (dMes = 0) or (dAno = 0) then exit; dMes := dMes + 1; if dMes = 13 then begin dMes := 12; dAno := dAno - 1; end; data := EncodeDate(dAno, dMes, dDia) - 1; DecodeDate(data, dAno, dMes, dDia); Result := dDia; end;
Daí você pode implementar, caso queira, para que o parâmetro da função ao invés de string seja integer ou uma data mesmo.
GOSTEI 0
Moliva
24/11/2004
Olá
Acredito que a menira mais fácil é usar a função [b:73edf167ef]DaysInMonth[/b:73edf167ef] - Sysutils.
Esta função retorna a quantidade de dias em um mês. Obviamente este valor equivale ao último dia.
Vejam exemplo:
ShowMessage(IntToStr(DaysInMonth(DateTimePicker1.Date)));
[]s
Moliva
Acredito que a menira mais fácil é usar a função [b:73edf167ef]DaysInMonth[/b:73edf167ef] - Sysutils.
Esta função retorna a quantidade de dias em um mês. Obviamente este valor equivale ao último dia.
Vejam exemplo:
ShowMessage(IntToStr(DaysInMonth(DateTimePicker1.Date)));
[]s
Moliva
GOSTEI 0
Marco Salles
24/11/2004
Acredito que a menira mais fácil é usar a função DaysInMonth - Sysutils.
Sim, mas a partir de qual delphi esta funçaõ esta disponivel :?: :?: :?:
GOSTEI 0
Aroldo Zanela
24/11/2004
Colegas,
A partir do Delphi 6, porém, pode ser adicionada em qualquer versão por meio da unit DateUtils da RxLib.
Fonte abaixo:
A partir do Delphi 6, porém, pode ser adicionada em qualquer versão por meio da unit DateUtils da RxLib.
Fonte abaixo:
function IsLeapYear(AYear: Integer): Boolean;
begin
Result := (AYear mod 4 = 0) and ((AYear mod 100 <> 0) or (AYear mod 400 = 0));
end;
function DaysPerMonth(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); { leap-year Feb is special }
end;GOSTEI 0
Placido
24/11/2004
Aroldo esta função é 10, resolveu o meu problema, obrigado.
Plácido
Plácido
GOSTEI 0