Utiliza funciones nativas de PHP.
function nombremes($mes){
setlocale(LC_TIME, 'spanish');
$nombre=strftime("%B",mktime(0, 0, 0, $mes, 1, 2000));
return $nombre;
}
El nucleo es la función strftime que utilizamos con 2 parametros: el primero es el formato en que quiero que me devuelva la fecha y el 2do es la fecha en si (en formato TIMESTAMP por eso la armamos con mktime) que sino lo pasamos toma la fecha actual. En este caso pongo el dia en 1 y el año en 2000 ya que no los voy a utilizar.
El setlocale es importante porque selecciona los locales de fecha y hora en "spanish", sino saldrian los nombres de los dias y meses en ingles.
El uso de la función es muy simple. Ej:
$mes=nombremes(8);echo $mes; //devuelve "agosto"o algo más simple:
echo nombremes(8) devuelve "agosto".Espero les sirva, ya que en la mayoría de las webs encontré ejemplos mucho mas complicados con arrays y otros métodos más largos y complicados. Si en vez del mes quieren el día solo deben cambiar el %B por %A para el día completo y por %a para el día con 3 letras y luego cambiar la ubicación de la variable $mes (y cambiarle el nombre para que quede entendible).
Pueden ampliar la función para que devuelva el mes o el día según el parámetro pasado, se los dejo como ejercicio.
Excelente. Me funciono. Gracias.
ResponderBorrarHola
ResponderBorrarGracias, me funcionó
Genial, también me funcionó =), muchas gracias.
ResponderBorrarYo cambie un poco el script a
ResponderBorrarsetlocale(LC_TIME, 'es_ES');
es mas compatible el es_ES que la palabra spanish en mi server no funciona con solo spanish pero si con la variabel global del idioma es_ES
Gracias :)
ResponderBorrarMuchas gracias!
ResponderBorrargracias!!
ResponderBorrarSi no tengo internet no sirve verdad??
ResponderBorrarMuchas gracias, me saco de un apuro, necesitaba algo así de urgencia :)
ResponderBorrarExcelente, funciona muy bien, gracias!!
ResponderBorrarMuchas gracias, aduvo perfecto
ResponderBorrarme funciona pero me sale un error que dice mktime() expects parameter 4 to be long, array given in...
ResponderBorrarno se si depronto me puedas ayudar
creo que es mejor algo como esto..
ResponderBorrarsin problemas con el LOCALE, sin problemas con mktime ni nada y mas rápido..
function nombremes($mes){
$mes = array('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre');
return $mes[date('m')-1];
}
En mi caso funciono con:
ResponderBorrarsetlocale(LC_TIME, 'es_ES.UTF-8');
Muchas gracias, me funcionó muy bien.
ResponderBorrarY sigue funcionando en 2018
ResponderBorrarMuy bueno !!!
ResponderBorrarfunciona bien. buen aporte (y)
ResponderBorrarPara que inicie con mayuscula puedes agregar ucfirst($nombre)
ResponderBorrarprivate static function nombreMes($mes) {
setlocale(LC_TIME, 'spanish');
$nombre=strftime("%B",mktime(0, 0, 0, $mes, 1, 2000));
$nombre_mes = ucfirst($nombre);
return $nombre_mes;
}
Gracias, vamos a ver como funciona!
ResponderBorrar