Foros del Web » Programando para Internet » PHP »

Fecha en español, solución de raiz... date_es();

Estas en el tema de Fecha en español, solución de raiz... date_es(); en el foro de PHP en Foros del Web. Saludos a todos! Frecuentemente nos encontramos en el foro preguntas relacionadas a cambiar el formato de la fecha al español, y han salido cosas buenas ...
  #1 (permalink)  
Antiguo 25/08/2003, 00:59
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Fecha en español, solución de raiz... date_es();

Saludos a todos!

Frecuentemente nos encontramos en el foro preguntas relacionadas a cambiar el formato de la fecha al español, y han salido cosas buenas como soluciones.

Pero no me ha tocado ver alguna solución que permita hacer esto de manera dinámica y facilmente adaptable... tanto como la misma función date();

Por esa razón he decidido aportar este pequeño script, que es realmente una función que puede llamarse igual que date().

Comienzo por el resultado:

Código PHP:
Aqui presento varios ejemplos de uso:

<?
echo date_es("F j, Y, g:i a");
echo 
"<br>";
echo 
date_es("j \\de F \\de Y, g:i a","1972-06-25");
echo 
"<br>";
echo 
date_es();
?>

Salida:

Agosto 25, 2003, 1:32 am
25 de Junio de 1972, 12:00 am
Agosto 25, 2003

De hecho como podrán ver tiene un par de ventajas sobre la función de PHP, ya que la fecha que se le ingresa puede ser tanto en formato "AAAA-MM-DD" como en un TIMESTAMP válido, además de que si es llamada sin argumentos, entrega la fecha de hoy en un formato preestablecido.

Si les interesa, en el siguiente post les paso la función...

__________________
Manoloweb

Última edición por Manoloweb; 25/08/2003 a las 01:07
  #2 (permalink)  
Antiguo 25/08/2003, 01:00
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Código PHP:
function date_es($formato="F j, Y",$fecha=0) {
    if (
ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})"$fecha,$partes)) {
        if (
checkdate($partes[2],$partes[3],$partes[1])) {
            
$fecha=strtotime($fecha);
        } else {
            return(-
1);
        }
    } elseif (
$fecha==0) {
        
$fecha=time();
    }
    
$dias=array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado");
    
$dias_c=array("Dom","Lun","Mar","Mie","Jue","Vie","Sab");
    
$meses=array("","Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
    
$meses_c=array("","Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic");
    
    
$valores=explode(" | ",date ("a | A | B | d | D | F | g | G | h | H | i | I | j | l | L | m | M | n | O | r | s | S | t | T | U | w | W | Y | y | z | Z",$fecha));
    
$claves= array ("a","A","B","d","D","F","g","G","h","H","i","I","j","l","L","m","M","n","O","r","s","S","t","T","U","w","W","Y","y","z","Z");
    for (
$i=0;$i<count($claves);$i++) {
        
$conv[$claves[$i]]=$valores[$i];
    }
    
$conv["D"]=$dias_c[$conv["w"]];
    
$conv["l"]=$dias[$conv["w"]];
    
$conv["F"]=$meses[$conv["n"]];
    
$conv["M"]=$meses_c[$conv["n"]];
    
$conv["r"]=$conv["D"].", ".$conv["d"]." ".$conv["M"]." ".$conv["Y"]." ".$conv["H"].":".$conv["i"].":".$conv["s"]." ".$conv["O"];
    
$conv["S"]="o";
    
$escape=' '//<< VER NOTA AL FINAL DEL POST!!!!!!!!!!
    
$escapado=0;
    
$f=$formato;
    
$res="";
    for (
$t=0;$t<strlen($formato);$t++) {
        if (
$escapado==1) {
            
$res.=$f{$t};
            
$escapado=0;
        } else {
            if(
$f{$t}==$escape) {
                
$escapado=1;
            } else {
                if (isset(
$conv[$f[$t]])){
                    
$res.=$conv[$f[$t]];
                } else {
                    
$res.=$f{$t};
                }
            }
        }
    }
    return 
$res;

La linea del $escape es tratada equivocadamente por el foro si la pongo dentro del coloreado PHP, por lo que aqui la pongo como debe ir...

$escape='\\\';
__________________
Manoloweb

Última edición por Manoloweb; 25/08/2003 a las 01:06
  #3 (permalink)  
Antiguo 25/08/2003, 08:52
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Esta función puede llamarse por medio de un include, y usarse normalmente en cualquier script en que se requiera tratamiento de fechas.

__________________
Manoloweb
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 09:13.