• 1
  • 5 RepliesReplies
  • 15898 ReadTimes Read
  • 0 PointsPoints

Topic: Fechas español - Función Setlocale y Date PHP

Usuario: 4kstore
Rango: Moderador Global
Mensajes: 4916
Points: 8111
Mi web: http://www.smfsimple.com
Perfil: View Profile
Pais:
ar
Fechas español - Función Setlocale y Date PHP
January 07, 2016 - 03:48 15:48
Como poner fechas en español usando php


Esto es una pequeña ayuda para los programadores que utilizan php y que a menudo se encuentran con problemas a la hora de trabajar con fecha, por mi parte siempre sufro tener que manipular fecha pero creo que es por una negación personal que tengo mas que por dificultad del propio tema.

Veamos, la función principal para manipular fecha en PHP es la función PHP DATE

No hablare de esta función en este tutorial pero si tienen dudas me lo dicen y preparo algo mas especifico sobre el esto, el tema principal ahora es que esta función devuelve cadenas en ingles, es decir los días y lo meses.

Para pasarlo a español tenemos dos formas rápidas.

La primera es setear la función setlocale para que interprete el idioma español como principal y de esta manera las funciones propias de php que manejan cadenas de texto serán devuelta en el idioma que especifiquemos.

Por ejemplo para usar el español seria:
Code: [Select]
setlocale(LC_ALL,”es_ES”);
Esta funcion solo funciona con strftime

El segundo método permite usar la función date y consiste en crear 2 arrays con los nombre de los meses y de los días en español y utilizando los indices de los array devolver el que corresponda.

Code: [Select]
public function dia($index)
    {
        $dias = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
        return $dias[$index];
    }

    public function mes($index)
    {
        $meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
        return $meses[$index];
    }

Un ejemplo seria:

Code: [Select]
echo $dias[date('w')]." ".date('d')." de ".$meses[date('n')-1]. " del ".date('Y') ;
La explicación seria que

date(w) devuelve el numero del día en el que nos encontramos (0 (para domingo) hasta 6 (para sábado))
entonces usamos ese numero y lo buscamos como indice en el array de días esto nos devolverá el día escrito

date(d)
nos devuelve el numero en 2 dígitos (01 a 31)

date(n)
Representación numérica de un mes, sin ceros iniciales, le restamos uno ya que los arrays empiezan desde 0 y lo evaluamos en el array meses, esto nos permite la representación textual del mes.

y finalmente date(Y) nos devuelve el año completo con 4 digitos

entonces podemos obtener algo como
Quote
Jueves 07 de Enero del 2016

Si tienen dudas al respecto no duden en comentar el post para que los pueda ayudar.
Abrazo!

You do not have permission to give points
point 0 Points

This topic did not receive points.

Usuario: Príncipe_Azul
Rango: Nuevo Usuario
Mensajes: 294
Points: 12
Perfil: View Profile
Pais:
ar
Re:Fechas español - Función Setlocale y Date PHP
Reply #1 January 07, 2016 - 11:57 23:57
Hola amigo, un gusto!

La verdad si bien yo he trabajado en 2 lenguajes (mIRC Scripting y Python) con las fechas en español, he usado otro buen método, es decir he utilizado la función $replace(), pero nunca había visto la forma en la vos lo hacés y la que más me gustó y me pareció muy interesante es la  segunda.

Posiblemente implemente tu método en futuros programas que haga! aunque el replace me parece más fácil y se usa menos código, pero siempre es bueno ver otras formas!!


Te mando un abrazo estimado!! :) :)

no avatar
Usuario: pipi2010
Rango: Nuevo Usuario
Mensajes: 252
Points: 43
Mi web: http://uni2s.com/
Perfil: View Profile
Pais:
ar
Re:Fechas español - Función Setlocale y Date PHP
Reply #2 January 08, 2016 - 05:48 05:48
muy buen aporte yo e usado barias veces el segundo metodo y me a funcionado de 10 ;)
se los recomiendo 100%

Usuario: 4kstore
Rango: Moderador Global
Mensajes: 4916
Points: 8111
Mi web: http://www.smfsimple.com
Perfil: View Profile
Pais:
ar
Re:Fechas español - Función Setlocale y Date PHP
Reply #3 January 08, 2016 - 07:36 07:36
Posiblemente implemente tu método en futuros programas que haga! aunque el replace me parece más fácil y se usa menos código, pero siempre es bueno ver otras formas!!

Gracias por el comentario, podrias dejar como usas el metodo replace para ver si lo agrego como metodo alternativo al post y ya de esa forma vamos armando varios caminos...

Abrazo!

Usuario: Príncipe_Azul
Rango: Nuevo Usuario
Mensajes: 294
Points: 12
Perfil: View Profile
Pais:
ar
Re:Fechas español - Función Setlocale y Date PHP
Reply #4 January 09, 2016 - 05:16 05:16
Hola amigo, si cláro que puedo dejar la forma de hacerlo! ;D

He intentado varias veces pero no me funciona, masomenos así sería la cuestión:

Code: [Select]
<?php

$timestamp 
getdate();

function 
dia($diaInles)
    {
    
$diaInles str_replace("Saturday""Sábado"$diaIngles);
    return 
$diaInles;
}

echo 
'Hoy es ' dia($timestamp[weekday]) . ' ' $timestamp[mday] . ' de ' $timestamp[month] . ' de ' $timestamp[year];

?>

es simplemente llamar a una función con el argumento del día o mes en inglés y que esa función retorne el día en español y para eso yo uso la función replace() que es la encargada de reemplazar el día o el mes de inglés a español.
Nunca había intentado esto en PHP puesto que no programo en ese lenguaje, pero al menos lo he intentado  :) ;D

Esa es la forma que yo uso para poner las fechas en nuestro idioma!
Sería muy bueno amigo que lo puedas completar al código ;)


Saludos!!!

no avatar
Usuario: gabrielrinco
Rango: Recién Llegado
Mensajes: 1
Points: 0
Mi web: roboticaydesarrollo.com
Perfil: View Profile
Pais:
co
Re:Fechas español - Función Setlocale y Date PHP
Reply #5 July 18, 2017 - 11:20 11:20
Hice este pequeño cambio por si alguien lo necesita:
Code: [Select]
$fecha = new DateTime();
$dias = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
$meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
$dia = $fecha->format('w');
$mes = $fecha->format('m')*1 - 1;
echo $dias[$dia]. ', ' . $fecha->format('d') . ' de ' . $meses[$mes] . ' de ' . $fecha->format('Y');
$fecha->format('l jS F Y');

 

TAGS



Subject Replies
PHP Started by 4kstore 25 Replies
17557 Views
PHP Started by 4kstore 12 Replies
14610 Views
El barcito Started by marulo 2 Replies
5301 Views
PHP Started by 4kstore 23 Replies
16436 Views
Blog SMFSimple Started by 4kstore 0 Replies
8988 Views
top

Smfsimple.com es un sitio destinado a brindar un servicio de soporte y herramientas para foros realizados con el sistema de foros gratuito simplemachines.org. Contamos con un selecto equipo de desarrolladores y conocedores del sistema, sus foros estaran en buenas manos.
This site is not affiliated with or endorsed by Simple Machines