date() en PHP

EnTe

Hola! mirad, toy haciendo una cosilla en PHP y queria saber si hay alguna forma de que me ponga la fecha y la hora en español, ahora mismo estoy usando la función con los siguientes parámetros:

date("l dS of F Y h:i:s A");

me lo escribe de la siguiente forma:

Monday 03rd of April 2006 08:29:09 PM

osea, me pone el dia de la semana, la fecha completa y la hora en la que se ejecutó el script, mi pregunta es: Puedo poner todo eso pero que sea en español??? como???

osea, que me ponga: Lunes 3 de abril 2006 08:29 PM entendeis????

Gracias por todo

Josepanaero

No estoy seguro al 100%, pero me atrevería a decir q si quieres q te haga eso, tendrás q currarte tú tu propia función, haciendo q te sustituya Monday por Lunes, y así tb con los meses.

Salu2!

edit: #3, no conocía esa función, pero está de puta madre y ahorra mucho tiempo.

SiCk

Tienes que usar la función de localización "setlocale".

http://es2.php.net/manual/es/function.setlocale.php

DArgo

#2 estás en lo cierto.
#1 lo que puedes hacer es obtener los datos y cambiarlos de orden. Para el dia de la semana haz un vector que sea por ejemplo:

$dias['01'] = 'Lunes'
$dias['02'] = 'Martes'

etcétera y luego cuando obtengas el valor numérico del dia actual con date puedes obtener el día en español con ese array.

Edit: Gracias #3 no conocia esa funcion :D

SiCk

Funciona de perlas, aunque más puntualmente para lo que se pregunta en este post es strftime()

http://es2.php.net/manual/es/function.strftime.php

Josepanaero

Otra cosilla: tengo la web alojada en un servidor americano y, al usar la función date, la fecha q me muestra, lógicamente, es diferente a la española.

Hay alguna forma (tocando el php.ini, el .htaccess, o qué se yo) de solucionar esto?

Salu2!!!

guner

Usa el sistema de internacionalización de PHP, y gmdate() (y gmstrftime() para la traducción)

Josepanaero

#7, si eso iba para mí, no sé qué es el sistema de internacionalización de PHP. Podrías ser un poco más específico, por favor?

Y sobre gmdate, creo q tampoco es lo q busco. Bueno, realmente tengo una duda con esto: el valor que te devuelve es el de la fecha del servidor o del país desde el q se produjo la petición??

Si es lo segundo, no me vale, pq podrían producirse incongruencias si postea gente de diferentes países.

Además, en mi sitio siempre uso la función date() y no es cuestión ahora de ponerme a cambiarlo todo...

Salu2!!

DArgo

Podrías sumarle las horas que hagan falta y listo :D

_IvanZ_

Ahi tienes todo el codigo completo, despues haz un

<? include('archivo.extension'); ?>

CÓDIGO-----------------------
<?php
//Sacamos y traducimos el nombre del dia

$dia=date("l");
if($dia=="Monday") $dia="Lunes";
if($dia=="Tuesday") $dia="Martes";
if($dia=="Wednesday") $dia="Miércoles";
if($dia=="Thursday") $dia="Jueves";
if($dia=="Friday") $dia="Viernes";
if($dia=="Saturday") $dia="Sábado";
if($dia=="Sunday") $dia="Domingo";

//Sacamos el número del día
$numdia=date("d");

//Sacamos y traducimos el nombre del mes

$mes=date("F");
if($mes=="January") $mes="Enero";
if($mes=="February") $mes="Febrero";
if($mes=="March") $mes="Marzo";
if($mes=="April") $mes="Abril";
if($mes=="May") $mes="Mayo";
if($mes=="June") $mes="Junio";
if($mes=="July") $mes="Julio";
if($mes=="August") $mes="Agosto";
if($mes=="September") $mes="Septiembre";
if($mes=="October") $mes="Octubre";
if($mes=="November") $mes="Noviembre";
if($mes=="December") $mes="Diciembre";

//Sacamos el año
$year=date("Y");

//Mostramos la fecha

echo "España, $dia $numdia de $mes de $year";
?>

EDITADO ---

No es seguro poner la funcion setlocale porque puede que hayan pcs que no lo tengan, un saludo!

Josepanaero

#9 sí, ésa es la solución cutre q he pensao, pero es q para eso tendría q ponerme ahora a retocar todo el código, y es bastante extenso... Tendría q ir mirando en todos los sitios en los q use la función date() o time() e ir cambiándolo...

También había pensado en redefinir la función time(), pero por lo visto no se puede redefinir en PHP :S

Alguna otra solución, o lo único q se puede hacer es lo de retocar todo el código? :S

LOc0

Si usas el mismo formato de fecha en todo los archivos PHP, yo me creaba un fecha.php, le metía a todos un require("fecha.php") y mediante un editor que permita reemplazar cadenas en varios ficheros al mismo tiempo (Notepad++ http://notepad-plus.sourceforge.net/uk/about.php) cambiaba la llamada actual que tengas para la fecha por un fecha() y punto.

Salu2 ;)

Usuarios habituales

  • LOc0
  • Josepanaero
  • _IvanZ_
  • DArgo
  • guner
  • SiCk
  • EnTe