Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-03-2008
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Smile 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
Responder Con Cita
  #2  
Antiguo 06-03-2008
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
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
Responder Con Cita
  #3  
Antiguo 06-03-2008
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
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;
Responder Con Cita
  #4  
Antiguo 06-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Algoritmo para comparacion de cadenas danilo_candales Varios 8 17-11-2007 17:23:14
Algoritmo para calcular el BPM turminator Varios 0 29-05-2007 00:19:49
Algoritmo para obtener las letras de etiqueta en personas físicas. Anagrama. setry2 Varios 0 18-07-2005 15:55:36
Demora en ir al ultimo registro para hacer insert JoanKa Firebird e Interbase 3 14-02-2005 18:46:31
Algun componente para un GIF? andrestsas Varios 3 20-08-2003 20:36:50


La franja horaria es GMT +2. Ahora son las 08:22:36.


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
Copyright 1996-2007 Club Delphi