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.
20 comentarios:
Excelente. Me funciono. Gracias.
Hola
Gracias, me funcionó
Genial, también me funcionó =), muchas gracias.
Yo cambie un poco el script a
setlocale(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 :)
Muchas gracias!
gracias!!
Si no tengo internet no sirve verdad??
Muchas gracias, me saco de un apuro, necesitaba algo así de urgencia :)
Excelente, funciona muy bien, gracias!!
Muchas gracias, aduvo perfecto
me funciona pero me sale un error que dice mktime() expects parameter 4 to be long, array given in...
no se si depronto me puedas ayudar
creo que es mejor algo como esto..
sin 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:
setlocale(LC_TIME, 'es_ES.UTF-8');
Muchas gracias, me funcionó muy bien.
Y sigue funcionando en 2018
Muy bueno !!!
funciona bien. buen aporte (y)
Para que inicie con mayuscula puedes agregar ucfirst($nombre)
private 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!
Publicar un comentario