Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cuantos Dias Tiene Un Mes ? (https://www.clubdelphi.com/foros/showthread.php?t=16593)

Pascual Montes 03-12-2004 01:29:55

Cuantos Dias Tiene Un Mes ?
 
Tengo un procedimiento en el cual necesito saber
cuantos dias tiene ese mes , pues lo uso como tope.
vi unas funciones como daysinmonth, daysinamonth y otras
pero no me funcionan , me dan valores muy diferentes al deseado
alguien conoce una funcion que haga esto ?

Thanks ......

:D

roman 03-12-2004 05:29:54

¿Cómo está eso de que te da resultados muy diferentes al desado? ¿Te da 40 dias en agosto y 15 en febrero?

¡Difícilmente se puede ser inexacto en algo así!

DaysInAMonth no usa un gran algoritmo para hacer el cálculo. De hecho no hace ningún cálculo en absoluto, simplemente toma los valores de uno de dos arreglos fijos de doce enteros:

[31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

dependiendo de si el año es o no bisiesto.

// Saludos

kalimero 03-12-2004 09:53:17

Hola.
Llevo tiempo utilizando esta función y va muy bien. Le pasas una fecha y te devuelve el numero de dias del mes.
Código Delphi [-]
function DiasMes(fecha: TDateTime): integer;
var
   PrimerDiaMes, PrimerDiaMesSiguiente : TDateTime;
   anyo, mes, dia: Word;
begin
   DecodeDate( fecha, anyo, mes, dia );
   primerDiaMes := EncodeDate(anyo, mes, 1);
   primerDiaMesSiguiente := IncMonth(primerDiaMes, 1);
   result := Round(primerDiaMesSiguiente - primerDiaMes);
end;

Saludos

Pascual Montes 06-12-2004 18:30:18

Hello Roman !
 
Gracias por Responder mi pregunta Roman, Sabes tal vez no me supe explicar
cuando me refiero a que me da valor muy diferente al deseado es que
me da por resultado cantidades de 8 digitos por ejemplo 43875423 y otras
por el mismo estilo. Que podra estar pasando ?
Te agradezco tu ayuda.


Saludos

Tomás 08-12-2004 19:53:34

Hola:

¿A que dimensión te has ido?, yo con vivir una mílesima de mes de esos tuyos me conformo.

No se como te puede dar eso. Podrías poner el código que estás utilizando para ver el error.

Yo he probado con esto y me da 31 y 28.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(DaysInMonth(Now)));
  ShowMessage(IntToStr(DaysInAMonth(2004,2)));
end;

jafl1965 08-12-2004 23:31:42

Cita:

Empezado por Tomás

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(DaysInMonth(Now)));
  ShowMessage(IntToStr(DaysInAMonth(2004,2)));
end;

28? No he ejecutado la función, pero debía dar 29, ya que el 2004 es bisiesto. Esto es un error de la función?

Tomás 09-12-2004 00:02:53

Hola:

Perdón, es error mío al transcribir el resultado, la función no tiene ningún error. En este caso da 31 y 29.

Un saludo. Tomás.


La franja horaria es GMT +2. Ahora son las 02:48:46.

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