Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-12-2004
Pascual Montes Pascual Montes is offline
Baneado
 
Registrado: nov 2004
Posts: 76
Poder: 0
Pascual Montes Va por buen camino
Question 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 ......

Responder Con Cita
  #2  
Antiguo 03-12-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿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
Responder Con Cita
  #3  
Antiguo 03-12-2004
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 288
Poder: 21
kalimero Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 06-12-2004
Pascual Montes Pascual Montes is offline
Baneado
 
Registrado: nov 2004
Posts: 76
Poder: 0
Pascual Montes Va por buen camino
Thumbs up 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
Responder Con Cita
  #5  
Antiguo 08-12-2004
Tomás Tomás is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 140
Poder: 21
Tomás Va por buen camino
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;
Responder Con Cita
  #6  
Antiguo 08-12-2004
jafl1965 jafl1965 is offline
Miembro
 
Registrado: may 2003
Ubicación: Morelia, México
Posts: 170
Poder: 21
jafl1965 Va por buen camino
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?
Responder Con Cita
  #7  
Antiguo 09-12-2004
Tomás Tomás is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 140
Poder: 21
Tomás Va por buen camino
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.
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


La franja horaria es GMT +2. Ahora son las 11:19: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