Sábado, 13 de Agosto de 2011 10:05
Escrito por Cervantes Michel

MundoGeek: Manejo de fechas en PHP: 2 de 3.
Como seguidores de MundoGeek.com notaron el inicio de una serie de 3 artículos con referencia en el manejo de fechas en PHP, algo que a los nuevos programadores los mantiene despiertos por algo de tiempo hasta que encuentran algún algoritmo para solucionar su problema. Hoy se publica este articulo con la segunda parte de la serie de como manejar fechas en PHP.
El articulo dos de esta serie será como invertir fechas con un formato: DD/MM/AAAA a uno con un formato Date de mySql: AAAA-MM-DD. Esto aplica para un INSERT, porque es mas facil hacer nuestras validaciones, parseos, etc en PHP para luego ser insertadas en mySql que correr 200 queries con un DATE_FORMAT y nuestras validaciones dentro de los queries. Por otro lado el DATE_FORMAT puede ser eficaz en los SELECTs para el regreso de información y asi saltar validaciones innecesarias en PHP para mostrar fechas.
Ejemplo:
SELECT DATE_FORMAT('campo_fecha','%d / %m / %Y') as fecha FROM tabla;
Ejemplo de formatDates con el segundo case de mode_from
function formatDates($date,$mode_to=3,$mode_from=1,$separator='-',$mysqlDate=true){
switch($mode_from){
case 2:
#2011-08-05 - output
//Validando si la fecha no esta vacia
if(!empty($date) && $mysqlDate!=true){
$posDashInDate = strpos($date,'-');
$posSlashInDate = strpos($date,'/');
if($posDashInDate !=NULL && $posDashInDate > 0){
$strDateSeparator = '-';
}elseif ($posSlashInDate != NULL & $posSlashInDate > 0){
$strDateSeparator = '/';
}else{
$strDateSeparator = NULL;
}
if($strDateSeparator != false){
list($day, $month, $year) = explode($strDateSeparator, $date);
switch($mode_to){
//output 2011-08-05
case 1:
$return = $year.$separator.sprintf("%02s",$month).$separator.sprintf("%02s",$day);
break;
}
}else{
$return = 'N/A';
}
}else{
$return = 'N/A';
}
break;
} //mode_from
return $return;
}