Fórum Último dia do mês #259763
24/11/2004
0
Se alguém puder me ajudar agradeço.
Obrigado, Ricardo
Ricardo_ascii
Curtir tópico
+ 0Posts
24/11/2004
Rodc
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
25/11/2004
Placido
que incluir alguma classe na clausula user para funcionar :?: :?: :?:
DecodeDate(data, dAno, dMes, Result);
Grato
Plácido
Gostei + 0
25/11/2004
Marco Salles
Se nao me a unit Da Procedure DecodeDate e [b:f7626f935d]Sysutils[/b:f7626f935d]
Gostei + 0
25/11/2004
Rodc
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
25/11/2004
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
25/11/2004
Marco Salles
Sim, mas a partir de qual delphi esta funçaõ esta disponivel :?: :?: :?:
Gostei + 0
25/11/2004
Aroldo Zanela
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
26/11/2004
Placido
Plácido
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)