Foros del Web » Programando para Internet » PHP »

Traducir Función de Fecha a Español

Estas en el tema de Traducir Función de Fecha a Español en el foro de PHP en Foros del Web. Hola, espero que alguien pueda ayudarme con la siguiente pregunta: ¿Cómo puedo modificar esta función para traducir la fecha al español? La fecha aparece actualmente ...
  #1 (permalink)  
Antiguo 09/04/2005, 15:51
 
Fecha de Ingreso: abril-2005
Mensajes: 50
Antigüedad: 19 años, 7 meses
Puntos: 0
Mensaje Traducir Función de Fecha a Español

Hola, espero que alguien pueda ayudarme con la siguiente pregunta:

¿Cómo puedo modificar esta función para traducir la fecha al español?

La fecha aparece actualmente de la siguiente manera: 06 Apr 2005

En vez de: 06 Abr 2005

Gracias

Código PHP:
<?php
// format MySQL DATETIME value into a more readable string
function formatDate($val)
{
    
$arr explode('-'$val);
    return 
date('d M Y'mktime(0,0,0$arr[1], $arr[2], $arr[0]));
}
?>

Última edición por raml; 09/04/2005 a las 17:58
  #2 (permalink)  
Antiguo 09/04/2005, 16:20
Avatar de braulito  
Fecha de Ingreso: abril-2004
Ubicación: Cusco - Perú
Mensajes: 597
Antigüedad: 20 años, 6 meses
Puntos: 8
Cambia el locale, pon:
Código PHP:
setlocale (LC_ALL'es_ES.ISO8859-1'); 
Sólo funciona si tu servidor corre bajo linux
__________________
Braulio Soncco
braulio at buayacorp dot com
Buayacorp - Programación y Diseño
  #3 (permalink)  
Antiguo 09/04/2005, 16:59
 
Fecha de Ingreso: abril-2005
Mensajes: 50
Antigüedad: 19 años, 7 meses
Puntos: 0
¿Hay alguna otra manera de integrar la traducción a la función que previamente expliqué o tal vez desde la base de datos?

En el caso de setlocale... ¿cómo se integra a la función?

Saludos
  #4 (permalink)  
Antiguo 09/04/2005, 20:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Claro que se puede desde la Base de Datos y es mejor hacerlo así. Esto no quiere decir que con PHP no se pueda.. el tema ya se ha tratado. Por lo pronto no puedo más que darte éste link... ahí viene todo: http://www.mysql-hispano.org/page.php?id=31&pag=6

Suerte!

Recordé haber participado en algo con el mismo titulo: http://www.forosdelweb.com/f18/traducir-espanol-fecha-285672/ Ahí plantean la forma en que sería desde PHP... Espero te sirva. Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 09/04/2005, 23:08
 
Fecha de Ingreso: abril-2005
Mensajes: 50
Antigüedad: 19 años, 7 meses
Puntos: 0
Gracias, pero como cambio la función

El tip en sí es muy bueno y lo puedo aplicar en general, gracias.

Sin embargo, aún estoy aprendiendo y mi problema es con esta función que mencionaba ya que la estoy estudiando de un script ya hecho. Es por eso que necesito ayuda en alterar esta funcion en específico para poder obtener la fecha de las noticias publicadas en español.

Ojalá me puedan ayudar a modificar esta funcion en específico.

En todo caso como complemento para que tengan más información, el script que llama la función y despliega la información y las fechas, es el siguiente:

Código PHP:
<html>
<head>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</script>
<basefont face="Verdana">
</head>

<body>

<!-- standard page header begins -->
<p><p>

<table width="100%" cellspacing="0" cellpadding="5">
<tr>
    <td></td>
</tr>
<tr>
    <td bgcolor="Navy"><font size="-1" color="White">
    <b>Megalomaniacs Inc : Press Releases</b></font>
    </td>
</tr>
</table>
<!-- standard page header ends -->

<ul>
<?php
// includes
include('../conf.php');
include(
'../functions.php');

// open database connection
$connection mysql_connect($host$user$pass) or die ('Unable to connect!');

// select database
mysql_select_db($db) or die ('Unable to select database!');

// generate and execute query
$query "SELECT id, title, timestamp FROM news ORDER BY timestamp DESC LIMIT 0, 5";

$result mysql_query($query) or die ("Error in query: $query. " mysql_error());

// if records present
if (mysql_num_rows($result) > 0)
{
    
// iterate through resultset
    // print article titles
    // abrir las noticias como pop up window
    
while($row mysql_fetch_object($result))
    {
    
$id $row->id;
    
?>
        <li><font size="-1"><b>
        
        <a href="#self" onClick="MM_openBrWindow('story.php?id=<?php echo $id?>','','toolbar=yes,status=yes,scrollbars=yes,resizable=yes,width=650,height=550')"><?php echo $row->title?></a></b></font><br>
        
        <font size="-2"><?php echo formatDate($row->timestamp); ?>
        </font>
        <p>
    <?php
    
}
}
// if no records present
// display message
else
{
?>
    <font size="-1">No press releases currently available</font>
<?php
}

// close database connection
mysql_close($connection);
?>
<br>
<a href="../admin/list.php">Admin Page </a>    
        </ul>

<!-- standard page footer begins -->
<p>
<table width="100%" cellspacing="0" cellpadding="5">
<tr>
    <td align="center"><font size="-2">
    All rights reserved. Visit Melonfire 
    <a href="http://www.melonfire.com/community/columns/trog/"> 
    here</a> for <a href="#" onClick="MM_openBrWindow('story.php','','toolbar=yes,status=yes,scrollbars=yes,resizable=yes,width=650,height=550')">more</a>.</td>
</tr>
</table>
<!-- standard page footer ends -->

</body>
</html>
Gracias,
  #6 (permalink)  
Antiguo 09/04/2005, 23:43
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Citaré a nicolaspar: "podrías haberte esmerado un poquitin nomas."

.... Ok.. tienes algo hecho... para no modificar nada lo que tienes, para que peudas comprender el funcionamiento... y para hacerte sufrir un poquito ()... algo como esto puede servirte:
Código PHP:
function formatDate($val)
{
    
$arr explode('-'$val);
// HASTA AQUÍ TODO NORMAL
    
$algodate('d M Y'mktime(0,0,0$arr[1], $arr[2], $arr[0]));
// en vez de regresar el valor obtenido lo volvemos a descomponer
    
$otro_algoexplode(" "$algo);
// en la posición 1 del arreglo se encuentra el mes en texto.. lo comparamos y cambiamos
    
switch($otro_algo[1]){
// las siguientes 3 líneas son las que se repetirán... cabiando solo el respectivo caso.
       
case "Apr":
            
$otro_algo[1]="Abr";
            break;
// Agregar los otros casos, para los otros 11 meses... 
    
}
// volvemos a armar la fecha
    
$buena$otro_algo[0]." ".$otro_algo[1]." ".$otro_algo[2];
// y listo... regresamos algo como 06 Abr 2005
    
return $buena

Espero te sirva.. sobre todo espero lo entiendas.. y espero puedas simplificarlo. Suerte!

Por si acaso no conoces la función switch() -> http://mx.php.net/manual/es/control-...res.switch.php
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 09/04/2005 a las 23:47
  #7 (permalink)  
Antiguo 10/04/2005, 00:29
 
Fecha de Ingreso: abril-2005
Mensajes: 50
Antigüedad: 19 años, 7 meses
Puntos: 0
Funcionó de maravilla. Muchas gracias, no sabes lo que esto me va a ayudar a entender mejor algunas de estas funciones. Me tenían hecho bolas entre [return], [explode], [mktime] y [date].

Claro!!!... ahora el reto será simplificarlo; le voy a dar una buena repasada. Eso sí... agregué los meses faltantes, jajaja

Saludos

Espero que esta función le sirva a otros:

Código PHP:
function formatDate($val)
{
    
$arr explode('-'$val);
// HASTA AQUÍ TODO NORMAL
    
$algodate('d M Y'mktime(0,0,0$arr[1], $arr[2], $arr[0]));
// en vez de regresar el valor obtenido lo volvemos a descomponer
    
$otro_algoexplode(" "$algo);
// en la posición 1 del arreglo se encuentra el mes en texto.. lo comparamos y cambiamos
    
switch($otro_algo[1]){
// las siguientes 3 líneas son las que se repetirán... cabiando solo el respectivo caso.
       
case "Jan":
            
$otro_algo[1]="Ene";
            break;
       case 
"Apr":
            
$otro_algo[1]="Abr";
            break;
        case 
"Aug":
            
$otro_algo[1]="Ago";
            break;
        case 
"Dec":
            
$otro_algo[1]="Dic";
            break;
        
// Agregar los otros casos, para los otros 11 meses...
    
}
// volvemos a armar la fecha
    
$buena$otro_algo[0]." ".$otro_algo[1]." ".$otro_algo[2];
// y listo... regresamos algo como 06 Abr 2005
    
return $buena;

?> 

Última edición por raml; 10/04/2005 a las 00:32
  #8 (permalink)  
Antiguo 10/04/2005, 00:56
Avatar de braulito  
Fecha de Ingreso: abril-2004
Ubicación: Cusco - Perú
Mensajes: 597
Antigüedad: 20 años, 6 meses
Puntos: 8
Código PHP:
function getStrDate($fecha){
setlocale (LC_ALL'es_ES.ISO8859-1');
$str_date strftime("%d %b %Y"strtotime($fecha));
return 
$str_date;

en el parámetro fecha puedes fechas como esta 2004-12-31
Mira más en http://www.php.net/strtotime
__________________
Braulio Soncco
braulio at buayacorp dot com
Buayacorp - Programación y Diseño

Última edición por braulito; 10/04/2005 a las 11:05
  #9 (permalink)  
Antiguo 11/04/2005, 00:26
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Nada más comentar que la función setlocale() no es 100% confiable... no por eso no es útil.

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

"100 años después, la revolución no es con armas, es intelectual y digital"
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 14:09.