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.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
