Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Algún algoritmo para calcular el último día de un mes (https://www.clubdelphi.com/foros/showthread.php?t=54006)

David 06-03-2008 10:48:35

Algún algoritmo para calcular el último día de un mes
 
Hola

Teniendo el año y el día del mes, quiero que me devuelva el último día de ese mes, realmente el último día de cada més es fijo, podía hacerlo con if mes = 1 then ultimodia = 31, etc...

Pero no sé si hay alguna manera de hacerlo más rápido, y también hay otra cuestión que son los años bisiestos, teniéndo el año, habría que calcularlo de alguna forma.

Un saludo

kuan-yiu 06-03-2008 11:08:15

Esta función te dice el nº de días del mes de un año determinado, así que te valdría para lo que quieres. Búscala en la ayuda de Delphi
DaysInAMonth

luisgutierrezb 06-03-2008 16:56:34

lo mas facil:

Código Delphi [-]
// le restamos un dia al primer mes siguiente para que nos devuelva el ultima dia
//no importa si el año es biciesto
UltimoDia := EncodeDate(anio, mes+1,1) - 1;

keyboy 06-03-2008 17:13:01

Al contrario. Es mucho más difícil. Tanto DaysInAMonth como EncodeDate hacen uso del arreglo

Código Delphi [-]
MonthDays: array [Boolean] of TDayTable =
  ((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
  (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31));

y la función IsLeapYear. Pero, mientras que DaysInAMonth simplemente "toma" el valor del arreglo:

Código Delphi [-]
Result := MonthDays[(AMonth = 2) and IsLeapYear(AYear), AMonth];

EncodeDate hace esto junto con varios condicionales y un ciclo for.

Bye


La franja horaria es GMT +2. Ahora son las 08:48:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi