PHP:Formato de fechas

De Foros del Web

Pondré un ejemplo con 3 tipos de fechas (corta, media y larga) que dice ser así:

Código PHP:

<?
 /***
 la var $setting puede estar seteada para un idioma (ej, español.php) determinado, pudiendo tener para cada idioma diferentes formatos
 ***/
 
 /********=))==))==))=********
 EN EL ARCHIVO PHP DE IDIOMAS:
 ********=))==))==))=********/
 
 /***
 Formato de fechas validos, corto, medio y largo, pueden personalizar el suyo de así necesitarlo:
 ***/
 $setting['FORMATO_FECHA_CORTO'] = 'd/m/Y';
 $setting['FORMATO_FECHA_MEDIO'] = '%mes% %de% Y';
 $setting['FORMATO_FECHA_LARGO'] = '%dia% %de% %mes% %de% Y'; // se le pueden poner cosas como: \H\o\y \e\s %dia%, o agregar un setting tal cual lo es "de" que se llame "hoy" y otro "es". Además de agregar cualquier comodín válido de www.php.net/date
 
 
 /***
 Para cada caso del ejemplo tengo dias, meses y el texto "de"
 ***/
 $setting['DIAS'] = array('Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado');
 $setting['MESES'] = array('positionZero','Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
 $setting['DE'] = 'de';
 
 
 
 /********=))==))==))=********
 EN EL ARCHIVO PHP DE FUNCIONES:
 ********=))==))==))=********/
 
 /**
 Function formatearFechaIdiomas
 In: timestamp, variable setting, formato (corto, medio, largo)
 **/
 function formatearFechaIdiomas( $time, &$setting, $formato = 'corto'){
     $no = array( '%dia%', '%mes%', '%de%' ); #Esto es lo que escribimos en el setting, para que sea más legible para el administrador del sitio. Se pueden agregar tantas variantes se crean necesarias, tendiendo su posición declarada en el array $setting
     $si = array( '%\d\i\a%', '%\m\e\s%', '%\d\e%' ); #No se le pude pasar a date cosas como "mes", ya que las tres letras son valores reservados, hay que escaparlos.
     $traduccion = array( $setting['DIAS'][date("w",$time)], $setting['MESES'][date("n",$time)], $setting['DE'] ); #Y esta es la traducción de cada elemento
     #FORMATO CORTO
     if( $formato == 'corto' ) return date( $setting['FORMATO_FECHA_CORTO'], $time);
     #FORMATO MEDIO
     if( $formato == 'medio' ){
         $setting['FORMATO_FECHA_MEDIO'] = str_replace( $no, $si, $setting['FORMATO_FECHA_MEDIO'] );
         return str_replace( $no, $traduccion, date( $setting['FORMATO_FECHA_MEDIO'], $time) );
     }
     #FORMATO LARGO
     if( $formato == 'largo' ){
         $setting['FORMATO_FECHA_LARGO'] = str_replace( $no, $si, $setting['FORMATO_FECHA_LARGO'] );
         return str_replace( $no, $traduccion, date( $setting['FORMATO_FECHA_LARGO'], $time) );
     }
     return FALSE;    
 }
 
 
 /********=))==))==))=********
 EJEMPLO DE USO, la parte simple:
 ********=))==))==))=********/
 echo formatearFechaIdiomas( time(), $setting, 'corto') . "<hr>"; #Out: 12/6/2008
 echo formatearFechaIdiomas( time(), $setting, 'medio') . "<hr>"; #Out: Junio de 2008
 echo formatearFechaIdiomas( time(), $setting, 'largo') . "<hr>"; #Out: Domingo 12 de Junio de 2008
 
 ?> 

--nicolaspar 22 May 2008

Este artículo es parte de las FAQs de PHP y el Manual de PHP.

Herramientas personales