Cristalab

                 ¿Quieres registrarte?

Cómo obtener el total de días en un mes en PHP

Por: Dano
2 de Octubre del 2008
3333 de clabLevel
Otros artículos de Dano
2,511 visitas
php

Les paso una sencilla función para saber cuantos días tiene un mes. Ya existe una función nativa de php para eso, pero requiere tener instalada la extensión de calendario (no todos los servidores compilan php con esa extensión). Si no tienes la extensión, obtenemos el total de meses, con una función que se me ocurrió el otro día y es muy simple.

Código :

function getMonthDays($Month, $Year)
{
   //Si la extensión que mencioné está instalada, usamos esa.
   if( is_callable("cal_days_in_month"))
   {
      return cal_days_in_month(CAL_GREGORIAN, $Month, $Year);
   }
   else
   {
      //Lo hacemos a mi manera.
      return date("d",mktime(0,0,0,$Month+1,0,$Year));
   }
}
//Obtenemos la cantidad de días que tiene septiembre del 2008
echo getMonthDays(9, 2008);

Simplemente hay que pasarle como parámetro el mes y el año, es todo.


Artículos Relacionados


Etiquetas php

Comentarios | Enviar un comentario
No tenía idea de la existencia de la extensión de calendario. Estas cosas casi siempre terminaba haciéndolas a mano o jalando del framework (CodeIgniter). Gracias por el hack Dano U_U
Por: Freddie
Usando el parámetro "correcto" en date sería:

Código :

function getMonthDays($Month, $Year) 
{ 
   //Si la extensión que mencioné está instalada, usamos esa. 
   if( is_callable("cal_days_in_month")) 
   { 
      return cal_days_in_month(CAL_GREGORIAN, $Month, $Year); 
   } 
   else 
   { 
      //Lo hacemos a mi manera. 
      return date("t",mktime(0,0,0,$Month,1,$Year)); 
   } 
} 
//Obtenemos la cantidad de días que tiene septiembre del 2008 
echo getMonthDays(9, 2008);


saludos
Por: Maikel

Freddie :

No tenía idea de la existencia de la extensión de calendario. Estas cosas casi siempre terminaba haciéndolas a mano o jalando del framework (CodeIgniter). Gracias por el hack Dano U_U

Espero seguir pronto con tips mas avanzados, como un ConfigHandler. ^^

Maikel :

Usando el parámetro "correcto" en date sería:

Código :

function getMonthDays($Month, $Year) 
{ 
   //Si la extensión que mencioné está instalada, usamos esa. 
   if( is_callable("cal_days_in_month")) 
   { 
      return cal_days_in_month(CAL_GREGORIAN, $Month, $Year); 
   } 
   else 
   { 
      //Lo hacemos a mi manera. 
      return date("t",mktime(0,0,0,$Month,1,$Year)); 
   } 
} 
//Obtenemos la cantidad de días que tiene septiembre del 2008 
echo getMonthDays(9, 2008);


saludos

Pues si, otra forma es con date("t"). Tu usas las sintaxis de date para obtenerlo, yo al crear el timestamp ya traigo el día final y no necesito ya calcularlo. Mismo resultado, diferentes formas, cuestión de gustos. :wink:
Por: Dano
buen tip Dano y como dice Freddie antes uno se mataba haciendo funciones que cumplieran esta labor, aunque gracias a Dios yo uso Zend Framework y hacer esta operación es tan facil como poner Zend_Date::MONTH_DAYS y listo!
Por: vanvanero-blog
awful
Por: php is...-blog
Yo utilice la misma solo que le mande otros parámetros de otras funciones y me funciono correctamente
Gracias...
Por: dgovazquez09-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.