Hola foreros, aquí les dejo un pequeńo aporte, una función para convertir fechas desde cualquier formato. Dado que la función utiliza la classe DateTime, si se utilzan nombres de meses o dias se requiere una traducción. En este ejemplo, sólo he traducido meses y dias, si queréis utilizar algún formato no previsto en esta función se debe agregar un array con las traducciones requeridas. Espero que a alguien le sirva, saludos!
Código PHP:
Ver original<?php
/**
* Devuelve una fecha formateada a partir de otra fecha con formato.
* Dado que esta función utiliza la classe DateTime (que no utiliza la configuración regional),
* es necesario hacer una traducción de los posibles nombres de meses y dias.
* @since 16/11/2011la fecha a convertir
* @param string $originalFormat el formato de entrada de la fecha dada
* @param string $outputFormat el formato deseado de salida
* @return string $return, la fecha formateada o false en caso de error
*/
function date2date($date, $originalFormat, $outputFormat)
{
$newDate = DateTime::createFromFormat($originalFormat, $date);
//Class DateTime no maneja configuración local, hay que hacer una traducción manual
"January" => "Enero",
"February" => "Febrero",
"March" => "Marzo",
"April" => "Abril",
"May" => "Mayo",
"June" => "Junio",
"July" => "Julio",
"August" => "Agosto",
"September" => "Septiembre",
"October" => "Octubre",
"November" => "Noviembre",
"December" => "Diciembre"
);
//Class DateTime no maneja configuración local, hay que hacer una traducción manual
"Monday" => "Lunes",
"Tuesday" => "Martes",
"Wednesday" => "Miércoles",
"Thursday" => "Jueves",
"Friday" => "Viernes",
"Saturday" => "Sábado",
"Sunday" => "Domingo"
);
"Mon" => "Lunes",
"Tue" => "Martes",
"Wedn" => "Miércoles",
"Thu" => "Jueves",
"Fri" => "Viernes",
"Sat" => "Sábado",
"Sun" => "Domingo"
);
$val = $newDate->format($outputFormat);
foreach($months as $eng => $esp) {
if($return!=$val) break;
}
foreach($days as $eng => $esp) {
if($return!=$val) break;
}
foreach($days_full as $eng => $esp) {
if($return!=$val) break;
}
return $return;
}
//Demo, algunas fechas y formatos:
"10/12/2001" => "d/m/Y",
"2001.12.10" => "Y.m.d",
"December 10, 2001" => "F d, Y",
"10-12-2001" => "d-m-Y"
);
//Todas las fechas las voy a pasar a este formato
$output = "D d, M Y";
//traducción
foreach ($fechas as $date => $format)
{
echo "<h1>Antes: $date, ahora es: ".date2date($date, $format, $output)."</h1>";
}
?>