2011-08-02 17 views
9

Tengo esta consulta de MySQL, que devuelve dos fechas (que están formateadas como a-m-Y). Ahora quiero traducir esta fecha a mi propio idioma (danés). Cómo puedo hacer eso. He intentado las funciones setlocale() y strftime(), pero no funcionará. Sé que es una pregunta muy básica, pero realmente necesito ayuda :) ¡Muchas gracias!Cambiar el idioma para la fecha en php

Respuesta

1

No creo que la función date() haya evolucionado lo suficiente para usted, aquí.

En su lugar, le recomiendo que eche un vistazo a la clase IntlDateFormatter(citando):

Fecha formateador es una clase concreta que permite dependiente de la localización formatear/análisis de fechas usando cadenas de patrones y/o patrones enlatados .

Hay un par de ejemplos en la página del manual de IntlDateFormatter::format(), donde se utiliza este método para mostrar una fecha en dos idiomas diferentes, con sólo ajustar el entorno local deseado.


1. incorporada con PHP> = 5,3

+0

Tha Parece un poco complejo: D Bien, lo echaré un vistazo. No entiendo que puede ser tan difícil simplemente cambiar el idioma :) – Emil

+0

Bueno, debes tener "algo" que pueda generar la cadena en el idioma correcto, lo que significa conocer las palabras, su orden, ... . y esa no es una tarea fácil. –

6

Uso setlocale y strftime juntos:

setlocale(LC_TIME, array('da_DA.UTF-8','[email protected]','da_DA','danish')); 
echo strftime("%A"); // outputs 'tirsdag' 

funciona en mi instalación de PHP en Windows.

+1

¿Pero puedo generar variables con ese método? – Emil

+0

¿Qué quieres decir? ¿Qué variables quieres exportar? –

+0

Guardo los datos de fecha de la consulta en variables. No quiero dar salida a la fecha actual ... – Emil

-1

Si usted está tratando de convertir un datetime intente esto:

$fecha = $dateConsulta->format('d-M-Y'); 
$fecha = str_replace('Jan','Ene',$fecha); 
$fecha = str_replace('Apr','Abr',$fecha); 
$fecha = str_replace('Aug','Ago',$fecha); 
$fecha = str_replace('Dec','Dic',$fecha); 
1

me encontré con que setlocale no es fiable, ya que se encuentra por proceso , no por hilo (el manual menciona esto). Esto significa que otras secuencias de comandos en ejecución pueden cambiar la configuración regional en cualquier momento. Una solución es usar IntlDateFormatter desde la extensión intl de php.

  • Instalar intl si necesarry (ubuntu): sudo apt-get install php5-intl

  • Instalar la configuración regional que desea utilizar (estoy usando italiano como ejemplo): sudo locale-gen it_IT

  • generar una fecha formateada localmente :

$fmt = new \IntlDateFormatter('it_IT', NULL, NULL); 
$fmt->setPattern('d MMMM yyyy HH:mm'); 
// See: http://userguide.icu-project.org/formatparse/datetime for pattern syntax 
echo $fmt->format(new \DateTime()); 
// Output: 6 gennaio 2016 12:10 
Cuestiones relacionadas