Delphi - Último día de mes

 
Vista:

Último día de mes

Publicado por Miguel (34 intervenciones) el 25/03/2004 12:07:10
Hola a todos

¿Cómo puedo saber cuál es el último día de un mes?Si le pongo Julio , que me retorne 31 , teniendo en cuenta febrero que puede ser bisiesto o no.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Último día de mes

Publicado por Rafael Fernández (17 intervenciones) el 25/03/2004 17:54:34
Facil Hermano, lo se porque mi hermana le gusta mucho la astrología, los meses 4 (abril), 6(junio), 9(septiembre), y 11(noviembre) simpre tienen 30 días, el mes de febrero si el año es biciesto tiene 29 días de lo contrario tiene 28, por ultimo el resto de los meses 1(enero), 3(marzo), 5(mayo), 7(julio), 8(agosto), 10(octubre) y 12(diciembre) simpre tienen 31 dìas, ahora bien imagino que ya habras deducido como definir en tu programa para saber el ultimo dia del mes excepto con febrero, para lo cual deberas utilizar la función "IsleapYear()", con la que sabrás si el año es biciesto. el codigo de una función que haga el trabajo seria mas o menos así:

Function Ultimo_Dia_Mes(Ano, Mes:Integer):Integer;
Begin
If (Mes >= 1) And (Mes <= 12) Then
If (Mes = 4) Or (Mes = 6) Or (Mes = 9) Or (Mes = 11) Then
Result:= 30
Else If Mes = 2 Then
Begin
If IsLeapYear(Ano) Then
Result:= 29
Else
Result:= 28
End
Else
Result:= 31
Else
ShowMessage('Mes incorrecto');
End;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Último día de mes

Publicado por nombre (14 intervenciones) el 25/03/2004 22:04:57
Utiliza la función DaysInAMonth.
Tendrás que añadir en:
uses
......., DateUtils;

Este ejemplo te devuelve el nº de días del mes de la fecha (Now).

procedure TForm1.Button1Click(Sender: TObject);
var
DD, MM, AA : Word ;
begin
DecodeDate(Now,AA,MM,DD);
ShowMessage(IntToStr(DaysInAMonth(AA,MM)));
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Último día de mes

Publicado por Fer (269 intervenciones) el 26/03/2004 09:10:10
Mira que os complicais:

{Devuelve el último día del mes de la fecha que recibe como parámetro.}
function LastDay(const pFecha: TDateTime): TDateTime;
var
viDia, viMes, viAno: word;
begin

DecodeDate(pFecha, viAno, viMes, viDia);

//Avanzamos un mes.
viMes := viMes + 1;

//Si nos hemos pasado, avanzamos el año.
if viMes = 13 then begin

viMes := 1;
viAno := viAno + 1;

end;//if viMes = 13

//Y devolvemos el día anterior al primer día del mes siguiente.
result := EncodeDate(viAno, viMes, 1) - 1;

end;//LastDay
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No se compliquen

Publicado por Ing Francisco Arena (140 intervenciones) el 26/03/2004 15:18:49
Miguel, si trabajas con Delphi 6 o superior, usa la función DaysInAMonth:

function DaysInAMonth (const AYear, AMonth: Word): Word;

donde AYear y AMonth es el año y el mes, respectivamente, o sea que la siguiente línea devolvería 29:

i:= DaysInAMonth (2004,2);

Eso sí, no te olvides de agregar la unidad DateUtils.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No se compliquen

Publicado por nombre (14 intervenciones) el 27/03/2004 02:10:41
Con la función DaysInAMonth o también con DaysInMonth

function DaysInAMonth(const AYear, AMonth: Word): Word;
function DaysInMonth(const AValue: TDateTime): Word;

Unit DateUtils.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar