Tema: FAQ's de PHP
Ver Mensaje Individual
  #194 (permalink)  
Antiguo 22/05/2008, 19:45
Avatar de nicolaspar
nicolaspar
 
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Respuesta: FAQ's de PHP

Tema: Formato de fechas
Pregunta: Necesito crear diferentes formatos de fechas para cada uno de los idiomas de mi sitio, ya que no es lo mismo el formato ingles que el español, es posible definir esto en la configuración del idioma?
Respuesta: 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$traducciondate$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$traducciondate$setting['FORMATO_FECHA_LARGO'], $time) );
     }
     return 
FALSE;    
 }
 
 
 
/********=))==))==))=********
 EJEMPLO DE USO, la parte simple:
 ********=))==))==))=********/
 
echo formatearFechaIdiomastime(), $setting'corto') . "<hr>"#Out: 12/6/2008
 
echo formatearFechaIdiomastime(), $setting'medio') . "<hr>"#Out: Junio de 2008
 
echo formatearFechaIdiomastime(), $setting'largo') . "<hr>"#Out: Domingo 12 de Junio de 2008
 
 
?>
__________________
Mi punto de partida es Que Bueno Lo Nuevo

Última edición por nicolaspar; 28/05/2008 a las 07:20