Ver Mensaje Individual
  #6 (permalink)  
Antiguo 19/06/2014, 07:27
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: PHP datetime() : de fecha actual a --> fecha desde base de datos.

Con la poderosa clase DateTime no lleva mucho resolverlo...... recomiendo usarla......

Código PHP:
Ver original
  1. <?php
  2. /*
  3.     @author: italico76
  4.    
  5.     @parameter date in format 'aaaa-mm-dd hh:mm:ss' (DATETIME de SQL)
  6.     @return algo como "Jueves, 12 de Junio del 2014"
  7. */
  8. function get_formated_date($date)
  9. {
  10.  
  11. if (empty($date) or strlen($date)!=19)
  12.     throw new Exception ("Fecha en formato invalido y <> de DATETIME");
  13.  
  14. $f = DateTime::createFromFormat('Y-m-d H:m:s', $date);
  15. $errors = DateTime::getLastErrors();           
  16. $valid = ($errors['warning_count']==0 and $errors['error_count']==0);
  17.  
  18. if (!$valid)
  19.     throw new Exception ("Fecha en formato invalido y <> de DATETIME");
  20.    
  21.  
  22. $dias['es'] = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
  23. $dias['en'] = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");
  24.  
  25. $meses['es'] =
  26. array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
  27. $meses['en'] = array('January','February','March','April','May','June','July','August','September','October','November','December');
  28.  
  29.  
  30. $out = $f->format('l j \d\e F \d\e\l Y');
  31. $out = str_replace($dias['en'],$dias['es'],$out);
  32. $out = str_replace($meses['en'],$meses['es'],$out);
  33.  
  34. return $out;
  35. }

Se usa asi:

Código PHP:
Ver original
  1. echo get_formated_date('2014-06-12 23:06:27');

Se puede mejorar la eficiencia y aqui la version en MySQL basado en el ejemplo de @gnzsoloyo

Código SQL:
Ver original
  1. SELECT
  2.     DAY(dtmFecha) dia, MONTH(dtmFecha) mes, YEAR(dtmFecha) anio,
  3.     CASE DAYOFWEEK(dtmFecha)
  4.       WHEN 7 THEN 'Sabado'
  5.       WHEN 1 THEN 'Domingo'
  6.       WHEN 2 THEN 'Lunes'
  7.       WHEN 3 THEN 'Martes'
  8.       WHEN 4 THEN 'Miercoles'
  9.       WHEN 5 THEN 'Jueves'
  10.       WHEN 6 THEN 'Viernes'
  11.       ELSE 'error'
  12.     END
  13.  AS diasemana FROM `tu_tabla` WHERE (condiciones)

Y desde PHP si usas la ultima solucion haces:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $meses =
  4. array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
  5.  
  6. $dia = $registro['dia'];
  7. $mes = $registro['mes'];
  8. $anio = $registro['anio'];
  9. $diasemana = $registro['diasemana'];
  10.  
  11. $fecha = "$diasemana, $dia de {$meses[$mes]} del $anio";
__________________
Salu2!

Última edición por Italico76; 19/06/2014 a las 08:40