PDA

Ver la Versión Completa : Obtener Maximo dias del mes en curso


zugazua2001
25-10-2005, 19:01:39
Hola a todos, yo tengo que facturar desde la fecha actual hasta el final del mes en curso. La fecha actual la obtengo con el "Date", pero como hago para saber la cantidad de dias que tiene el mes en curso.¿?
Gracias por todo. Mi version de delphi es la 5.

vtdeleon
25-10-2005, 19:12:04
Saludos

Por la cantidad de mensajes que llevas y fecha de suscripcion se puede decir que no eres nuevo en el foro. ¿Por qué no realizas una búsqueda?* ;). Casualmente ayer o antes se produjo la misma duda (http://www.clubdelphi.com/foros/showthread.php?t=26458) en este mismo apartado del foro.

**Espero que no lo tomes a mal :rolleyes:

Torreblanca
25-10-2005, 19:12:39
prueba con la fución DaysInaMoth(año,mes);
año y mes son variables que le debes pasar a la funcion ya sea desde un combo o un edit

vtdeleon
25-10-2005, 19:14:58
Wow

3 post en el mismo minuto(Record):P:P:P

dec
25-10-2005, 19:19:26
Hola,



3 post en el mismo minuto(Record):P:P:P

No puedo dejarte mal. No me había fijado en que habíamos publicado los tres mensajes en el mismo minuto. He borrado el que yo publiqué primero porque he visto que la respuesta que refieres tú es justo la misma que la que he dado por mi parte. No es la primera vez que borro un mensaje mío por este motivo. Pero esta vez tuve que escribir este para aclarar el tuyo. ;)

zugazua2001
25-10-2005, 20:42:04
Gracias a ambos, mi problema es que no tengo esa unidad.
De donde la puedo bajar¿?
Saludos a ambos...

vtdeleon
26-10-2005, 00:04:15
Saludos
mi problema es que no tengo esa unidad.Oops.De donde la puedo bajar¿?Ni la menor idea pero puede hacer esto: Feo, pero es lo que se me ocurre ahora

var
fecha,tfecha:TDate;
dia,mes,ano:word;
begin
fecha:=now;//Aquí asignas la fecha del mes
DecodeDate(fecha,ano,mes,dia);
inc(mes);
tfecha:=EncodeDate(ano,mes,dia);
showmessage(copy(DateToStr(tfecha+2-fecha),1,2));
Si alguien puede mejorarlo, agradecido estaré

Héctor Randolph
26-10-2005, 01:41:22
Es extraño que no tengas la unidad DateUtils :confused: , busca en la ruta
{Delphi5 Dir}\Source\Rtl\Common por algún lado debería estar.

Si no la encuentras aquí transcribo la función DaysInAMonth para que la implementes.



{ The MonthDays array can be used to quickly find the number of
days in a month: MonthDays[IsLeapYear(Y), M] }

const
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));

function DaysInAMonth(const AYear, AMonth: Word): Word;
begin
Result := MonthDays[(AMonth = 2) and IsLeapYear(AYear), AMonth];
end;

function IsLeapYear(Year: Word): Boolean;
begin
Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
end;



Un saludo.

Julià T.
26-10-2005, 02:19:54
hola vtdeleon:
el codigo que nos has expuesto, no funcionaria para los meses de diciembre, ni para los dias en que el mes siguiente tuviera menos dias el día en que estamos (por ejemplo 31 de octubre)
haciendo la pequeña corrección queda más o menos así

var
fecha,tfecha:TDate;
dia,mes,ano:word;
begin
fecha:=now;//Aquí asignas la fecha del mes
DecodeDate(fecha,ano,mes,dia);
fecha:=fecha-dia+1;//todos los meses tien día 1
inc(mes);
if mes >12 then
begin
mes:=1;
inc(ano);
end;
tfecha:=EncodeDate(ano,mes,1); //para obtener el dia 1 del mes siguiente
showmessage(copy(DateToStr(tfecha+2-fecha),1,2));
end;

vtdeleon
26-10-2005, 02:33:42
SaludosEs extraño que no tengas la unidad DateUtils :confused:
Creo que esta unidad está a partir de la versión 7, si no me equivoco :rolleyes:
el codigo que nos has expuesto, no funcionaria para los meses de diciembre, ni para los dias en que el mes siguiente tuviera menos dias el día en que estamos (por ejemplo 31 de octubre)Necesitaba un poquito de ayuda :rolleyes: , lo hice sin pensar :p

vtdeleon
26-10-2005, 02:42:19
Saludos
no funcionaria para los meses de diciembreMuy cierto, no existe mes 13 :rolleyes: ..ni para los dias en que el mes siguiente tuviera menos dias el día en que estamos (por ejemplo 31 de octubre) Oops :p

xavinet
26-10-2005, 16:51:22
Hola!!

En www.koders.com, busca DaysInMonth para delphi y si miras el .pas de las JEDI: JclDateTime.pas, puedes bajarte toda la unit o si prefieres te copias la función o funciones necesarias en tu unit.

Hasta pronto gente! ;)