Foros del Web » Programando para Internet » PHP »

APORTE: Fecha en Español

Estas en el tema de APORTE: Fecha en Español en el foro de PHP en Foros del Web. Hola, Este foro ha aportado mucho a mis conocimientos sobre php y html, cada vez que buscaba en google alguna duda una de las primeras ...
  #1 (permalink)  
Antiguo 09/08/2008, 16:16
 
Fecha de Ingreso: agosto-2008
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
APORTE: Fecha en Español

Hola,
Este foro ha aportado mucho a mis conocimientos sobre php y html, cada vez que buscaba en google alguna duda una de las primeras respuestas, y casi siempre la mas útil estaba en este foro... por eso he decidido registrarme y que mejor forma de empezar que hacer una pequeña aportación.
Se trata de una función muy sencilla y que puede ayudar a mucha gente, su funcionamiento es el mismo que el date() pero lo escribe en español. Lo he pensado con la posibilidad de añadir mas idiomas... adjunto el código, esta un poco comentado.

Consta de dos archivos... este primero contiene la función...

p ej: "Fecha.php"
Código PHP:
/*    Los Separadores por defecto son '|' pero si se quiere asignar
    cualquier otro separador tan solo hay que pasarlo como segundo argumento,
    ej fecha("a#y#s", "#");
    "a": am o pm
    "A": AM o PM
    "B": Tiempo de internet 000 a 999
    "c": Fecha ISO 8601
    "d": 01 a 31
    "D": Mon, Thu...
    "F": Enero a Diciembre
    "g": 1 a 12 horas
    "G": 0 a 23 horas
    "h": 01 a 12 horas
    "H": 00 a 23 horas
    "i": 00 a 59 horas
    "I": 1 formato ahorro, 0 no
    "j": 1 a 31
    "l": Lunes a Domingo
    "L": 1 año bisiesto, 0 no
    "m": mes 01 a 12
    "M": Ene a Dic
    "n": mes 1 a 12
    "O": GTM en horas
    "r": Fecha estilo RFC 2822 (Ingles)
    "s": Segundos 00 a 59
    "S": Sufijos en ingles de los dias de la semana
    "t": Numero del dias del mes 28 a 31
    "T": Formato temporal del ordenador con el que trabaja
    "U": Segundos al estilo de la epoca UNIX
    "W": Numero de la semana del año empezando por Lunes
    "Y": año con 4 digitos
    "y": año con 2 digitos
    "z": dia del Año 0 a 365
    "Z": Zona temporal contada en segundos */
    
function fecha($formato$Separador "|"$Idioma "Esp"){
        if(
file_exists ($Idioma.".php")){
            include 
$Idioma.".php";
        }else{
            echo 
"Falta archivo de idioma";
            return 
date("r");
        }
        
$Fecha "";
        
$expFormato explode($Separador$formato);
        foreach(
$expFormato as $argumento){
            if(
ereg($argumento"a A B c d g G h H i I j L m n O s S t T W Y y z Z"))
                
$Fecha .= date($argumento);
            else{
                switch(
$argumento){
                    case 
"D"/*Lun a Dom*/
                        
$Fecha .= $DiaC[date("w")];
                        break;
                    case 
"F":/*Enero a Diciembre*/
                        
$Fecha .= $Mes[date("n")-1];
                        break;
                    case 
"l":/*Lunes a Domingo*/
                        
$Fecha .= $Dia[date("w")];
                        break;
                    case 
"M":/*Ene a Dic*/
                        
$Fecha .= $MesC[date("n")-1];
                        break;
                    case 
"r":/*Fecha preFormateada*/
                        
$Aux ereg_replace(date("D"), $DiaC[date("w")], date("r"));
                        
$Aux ereg_replace(date("M"), $MesC[date("n")-1], $Aux);
                        
$Fecha .= $Aux;
                        break;
                    case 
"U":/*Fecha Unix*/
                        
$Fecha .= ereg_replace(date("F"), $Mes[date("n")-1], date("U"));
                        break;
                    default:
                        
$Fecha .= $argumento;
                }
            }
        }
        return 
$Fecha;
    } 
este otro la traducción...

"Esp.php"
Código PHP:
<?php
    $Dia 
= array("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
    
$DiaC = array("Dom","Lun","Mar","Mié","Jue","Vie","Sáb");
    
$Mes = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"); 
    
$MesC = array("Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic");
?>
Si por ejemplo quisiéramos el Catalán como idioma, tan solo se tendría que cambiar este archivo o bien añadir otro "Cat.php" y con un 3er parámetro en la función elegir el idioma mediante un switch.

Gracias por todo...

DW

Última edición por j4xl; 10/08/2008 a las 06:30 Razón: Actualizacion del Codigo
  #2 (permalink)  
Antiguo 09/08/2008, 17:13
 
Fecha de Ingreso: julio-2007
Ubicación: /home/victor
Mensajes: 114
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: APORTE: Fecha en Español

Código PHP:
echo fecha("H#:#i#:#s#, #j# de #F# del #Y""#"); 
Saludos
  #3 (permalink)  
Antiguo 10/08/2008, 03:09
 
Fecha de Ingreso: agosto-2008
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: APORTE: Fecha en Español

"vmac179" no entiendo tu respuesta... que es un ejemplo de como se usa??, he escrito yo la función, estoy haciendo un aporte... se que parece extraño que alguien llegue y su primer post sea un aporte o "idea", pero al menos tomate tiempo y lee lo que he escrito... XD.

Yo la uso asi:
Código PHP:
echo fecha("l| |j| de |F| de |Y| |G|:|i|:|s")."<BR>"
PD: He actualizado la función ahora traduce también las fechas pre formateadas, y se puede elegir el idioma (claro esta añadiendo el archivo correspondiente...) que por defecto esta en Esp, la única pega es que si se quiere elegir idioma hay que elegir separador también... pero bueno, no puedo remediarlo.
  #4 (permalink)  
Antiguo 11/08/2008, 08:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: APORTE: Fecha en Español

Hola j4xl,

La forma "correcta" de hacer lo que requieres es usar setlocale y usar strftime, con ello no tendrás problemas y podrás traducir tu aplicación en un futuro.

Saludos.
  #5 (permalink)  
Antiguo 11/08/2008, 13:31
 
Fecha de Ingreso: agosto-2008
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: APORTE: Fecha en Español

Oh! Gracias GatorV. Vaya yo pensando que no era posible poner la fecha en español, bueno tampoco busque nada al respecto... solo llevo un par de semanas con esto de las paginas web, el php, javascript, etc.
Bueno para algo servira, esta pequeña funcion... XDD

Gracias de nuevo.

DW
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:19.