Foros del Web » Programando para Internet » PHP »

conversion de fechas al español

Estas en el tema de conversion de fechas al español en el foro de PHP en Foros del Web. Hola estoy intentando convertir los meses, dias de la semana al castellano, hay alguna function en php para convertir lo de las fechas al español ...
  #1 (permalink)  
Antiguo 02/06/2005, 04:09
 
Fecha de Ingreso: julio-2003
Mensajes: 10
Antigüedad: 14 años, 4 meses
Puntos: 0
conversion de fechas al español

Hola
estoy intentando convertir los meses, dias de la semana
al castellano, hay alguna function en php para
convertir lo de las fechas al español que en vez ce
july ponga julio y el orden, con el strtotime no me lo coge, no se
nececesitaria un pequeña ayuda....
explico:
en lo de abrenoticia.php tengo el siguente codigo que
cogue de los campos que hay en el cms y a la
vez usa a la hora de visualizarlo la funcion tipica de php: date
el codigo que tengo es (lo que está en negrita es el quid de la cuestion):

<?php
error_reporting(0);
error_reporting(E_ERROR | E_WARNING | E_PARSE);
include('wp-config.php');
$id=$_GET["ID"];
$dbh=mysql_connect (localhost, root) or die ('Fallo al conectar: ' . mysql_error());
mysql_select_db (db,$dbh);

/*
*
*Descomponemos la instrucción en dos partes para ver donde está el error
* así resulta más facil hacer el análisis.
*
*/
$resultadoQuery = mysql_query("select ID, post_date, post_content, post_title from cemfeor_posts where ID=".$id);
//echo "Resultado de la consulta:". $resultadoQuery . '<br />';

$resultados=mysql_fetch_array($resultadoQuery);
//echo "Resultado de la consulta:". $resultados . '<br />';

?>

</head>
<body>
<h4><? echo $resultados["post_title"] ?></h4>
<i>Publicado el <? echo date (" d M Y",strtotime($resultados["post_date"])) ?>

</i><br /><br />
<div id="content" align="center"><? echo $resultados["post_content"]?></div>
</body>
</html>
<?
mysql_close($dbh);
?>


y la visualización la puedes ver en:
www.cemfe.org/index.php [enpruebas]
ahi clickeas en [más info] y compruebas que aparece algo asi:
Publicado el 27 May 2005

y yo quiero que aparezca:

Publicado el 27 Mayo 2005

o sea el mes en español y los días de la semana cuando se utilicen
los dias de la semana..
hay una function setlocale ()

MUCHAS GRACIAS POR ANTICIPADO
  #2 (permalink)  
Antiguo 02/06/2005, 05:59
 
Fecha de Ingreso: mayo-2005
Ubicación: Muy lejos de aquí
Mensajes: 367
Antigüedad: 12 años, 7 meses
Puntos: 0
XQ no pones....

<body>
<h4><? echo $resultados["post_title"] ?></h4>
<?
$dia=date("d");
$mes=date("M");
switch ($mes)
{
case "January": $mes_esp="Enero";
break;
//etc etc con todos los meses
}
$año=date("Y");
?>

<i>Publicado el <? echo "$dia de $mes_esp del $año"; ?>

</i><br /><br />
<div id="content" align="center"><? echo $resultados["post_content"]?></div>
</body>
__________________
Saludos!

Última edición por lanceusp; 02/06/2005 a las 06:12
  #3 (permalink)  
Antiguo 02/06/2005, 06:54
Avatar de alexjnm  
Fecha de Ingreso: octubre-2004
Ubicación: cuba
Mensajes: 218
Antigüedad: 13 años, 1 mes
Puntos: 1
mira esto

espero que te sirva es una forma para poner la fecha en español
Código PHP:
<?
//Variable nombre del mes
$nommes = array("Enero""Febrero""Marzo""Abril""Mayo""Junio""Julio""Agosto""Septiembre""Octubre""Noviembre""Diciembre");

//variable nombre día
$nomdia = array("Domingo""Lunes""Martes""Miercoles""Jueves""Viernes""Sabado");

/* date(j) toma valores de 1 al 31 segun el dia del mes
date(n) devuelve numero del 1 al 12 segun el mes
date(w) devuelve 0 a 6 del dia de la semana empezando el domingo
date(Y) devuelve el año en 4 digitos */

$dia date("j"); //Dia del mes en numero
$mes date("n"); //Mes actual en numero
$diasemana date("w"); //Dia de semana en numero

$hoy $nomdia[$diasemana].", ".$dia." de ".$nommes[$mes-1]." del ".date(Y).", ".date(h).":".date(i);

echo 
$hoy?>
saludos alex :)
__________________
__________________________________________________ _________
A beses el camino mas largo es la solución mas eficaz :)
  #4 (permalink)  
Antiguo 02/06/2005, 13:54
 
Fecha de Ingreso: mayo-2005
Ubicación: Muy lejos de aquí
Mensajes: 367
Antigüedad: 12 años, 7 meses
Puntos: 0
Muy bien, lo mismo pero con arrays, yo usé el Switch :)

Espero que te haya servido lo que te hemos dicho
__________________
Saludos!
  #5 (permalink)  
Antiguo 02/06/2005, 22:09
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
pero me parece la fecha viene de una Base de Datos???... en ese caso preferible usar SQL. Si usas MySQL (ignoro el funcionamiento con otras BDs) chekate este link: http://www.mysql-hispano.org/page.php?id=31&pag=6

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 03/06/2005, 03:10
 
Fecha de Ingreso: julio-2003
Mensajes: 10
Antigüedad: 14 años, 4 meses
Puntos: 0
Gracias a todos por vuestras respuetas, pero quiza no me explique bien,
ya que lo que quiero es que no me coga el dia de hoy, actual, sino
que me convierta el formato 0000-00-00 a 00-00-0000 que lo pone por defecto
en la bd de MySQL..
tb hay una opcion de cambiar setlocale?
o sea poner antes del date() ----> setlocale(LC_TIME,'esp');

Gracias de nuevo
lernys
  #7 (permalink)  
Antiguo 03/06/2005, 03:13
 
Fecha de Ingreso: mayo-2005
Mensajes: 7
Antigüedad: 12 años, 6 meses
Puntos: 0
Hola,
yo uso esto y funciona bien,

$fecha=0000-00-00;
$year=substr($fecha,0,4);
$month=substr($fecha,5,2);
$day=substr($fecha,8,2);
$fecha=$day."-".$month."-".$year;

Un saludo.
  #8 (permalink)  
Antiguo 03/06/2005, 04:04
Avatar de centinela77  
Fecha de Ingreso: diciembre-2004
Ubicación: León
Mensajes: 143
Antigüedad: 13 años
Puntos: 1
Cita:
Iniciado por lernys
Gracias a todos por vuestras respuetas, pero quiza no me explique bien,
ya que lo que quiero es que no me coga el dia de hoy, actual, sino
que me convierta el formato 0000-00-00 a 00-00-0000 que lo pone por defecto
en la bd de MySQL..
tb hay una opcion de cambiar setlocale?
o sea poner antes del date() ----> setlocale(LC_TIME,'esp');

Gracias de nuevo
lernys
puedes probar con lo siguiente:

Código PHP:
$fecha date("d/m/Y"strtotime($fecha)); 
  #9 (permalink)  
Antiguo 03/06/2005, 14:49
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por lernys
(...) que me convierta el formato 0000-00-00 a 00-00-0000 que lo pone por defecto
en la bd de MySQL..
tb hay una opcion de cambiar setlocale?
setlocale(), como verás en la documentación oficial, depende de la configuración de tu servidor por lo que no es 100% confiable (yo no suelo ocupar cosas que no son 100% confiables ): www.php.net/setlocale

Ahora bien, lo que planteas es distinto a lo que preguntaste claramente en tu consulta original:
Cita:
Iniciado por lernys
convertir lo de las fechas al español que en vez ce july ponga julio
.. pero bueno, vuelves a plantear (ó así lo entiendo yo) que esa fecha sera extraida de MySQL, entonces, como dije anteriormente, es --muy-- recomendable utilizar las funciones SQL para ello... igual viene en el link que dejé y sería algo como:
Código:
SELECT DATE_FORMAT("%d-%m-%Y", campo_fecha) FROM tabla
Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #10 (permalink)  
Antiguo 03/06/2005, 14:52
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Agrego: pero si el formato (tu última consulta) ya lo tienes!! ¿¿???
Cita:
Iniciado por lernys
<i>Publicado el <? echo date (" d M Y",strtotime($resultados["post_date"])) ?>
Verás que fue lo que te sugirieron...

www.php.net/date
www.php.net/strtotime

¿?..
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 03/06/2005, 21:33
Avatar de otreblanc  
Fecha de Ingreso: mayo-2005
Ubicación: Chiapas, la última frontera...
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 0
Hola!

Lo que escribe 'jam1138', da la solución exacta (si quieres extraer los datos de una tabla en MySQL):
Código PHP:
$consulta="SELECT DATE_FORMAT('%d-%m-%Y', campo_fecha) FROM latabla"
Solo un pequeño detalle, la consulta debe ser asi (al reves):
Código PHP:
$consulta="SELECT DATE_FORMAT(campo_fecha,'%d-%m-%Y') AS lafecha  FROM latabla"
De este modo puedes acceder al campo a traves del indice asociativo -$renglon['lafecha']- (claro si usas -mysql_fetch_assoc()-).

Enjoy! xD
  #12 (permalink)  
Antiguo 04/06/2005, 04:14
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 14 años, 4 meses
Puntos: 0
Yo lo hago así:

function convierte_fecha($fecha_ingles){

// Está funcion toma una fecha con formato 2004/12/01 y la devuelve en formato 01/Dic/2004

$ano=substr($fecha_ingles, 0, 4);
$mes=substr($fecha_ingles, 5, 2);
$dia=substr($fecha_ingles, 8, 2);

if ($mes=="01") $mes="Ene";
elseif ($mes=="02") $mes="Feb";
elseif ($mes=="03") $mes="Mar";
elseif ($mes=="04") $mes="Abr";
elseif ($mes=="05") $mes="May";
elseif ($mes=="06") $mes="Jun";
elseif ($mes=="07") $mes="Jul";
elseif ($mes=="08") $mes="Ago";
elseif ($mes=="09") $mes="Sep";
elseif ($mes=="10") $mes="Oct";
elseif ($mes=="11") $mes="Nov";
elseif ($mes=="12") $mes="Dic";
else $mes="--";
$fecha_castellano = ($dia."/".$mes."/".$ano);
return $fecha_castellano;
}//fin convierte_fecha

Saludos
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:34.