Convertir fechas entre MySQL y castellano en PHP
Programacion Web 18 enero 2008

Las fechas son el típico engorro que siempre nos molesta a la hora de programar, sobre todo porque según la base de datos que tengamos y la procedencia de la misma podemos tener distintos formatos de fecha que manejar.
La mayoría de utilizamos PHP con MySql que tienen formatos diferentes al que usamos en este país. Así pues es muy interesante conocer una forma de cambiar de un formato de fecha a otro de una forma cómoda y fácil.
El formato que utilizamos aquí es “dd/mm/aaaa” y el MySql utiliza el formato “aaaa-mm-dd”. Para poder realizar los cambios entre ambos formatos es recomendable crear un par de funciones, una de la fecha de MySql a castellano y otra para la operación contraria.
<?
////////////////////////////////////////////////////
//Convierte fecha de mysql a normal
////////////////////////////////////////////////////
function cambiaf_a_normal ( $fecha ){
ereg ( "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})" , $fecha , $mifecha );
$fechafinal = $mifecha [ 3 ]. "/" . $mifecha [ 2 ]. "/" . $mifecha [ 1 ];
return $fechafinal ;
}
//////////////////////////////////////////////////// //Convierte fecha de normal a mysql ////////////////////////////////////////////////////
function cambiaf_ a_mysql ( $fecha ){
ereg ( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})" , $fecha , $mifecha );
$fechafinal = $mifecha [ 3 ]. "-" . $mifecha [ 2 ]. "-" . $mifecha [ 1 ];
return $fechafinal ; }
?>
Ahora debemos saber utilizarlas.
Mostrar en la página una fecha en castellano
En este caso la fecha ha sido sacada de la base de datos a través de una variable llamada $fila->fecha y la mostramos en un formulario.
<input type="text" name="fecha" value=" <? echo cambiaf_a_normal ( $fila -> fecha ); ?> ">
Guardar en la base de datos una fecha en formato MySQL.
Suponemos que tenemos la fecha en una variable llamada $fecha, que está en castellano y que recogemos de un formulario.
En una consulta para añadir el registro a la base de datos sería:
<?
mysql_query ( "insert into documento (titulo_documento, fecha_documento, cuerpo_documento)
values ('$titulo_documento', '" . cambiaf_a_mysql ( $fecha ) . "', '$cuerpo_documento')" );
?>
Ya tenemos la función escrita para utilizarla donde queramos.
Vota este artículo:
Posts anterior y posterior:
Posts Relacionados:
- Previo: « SelectaPix. Galeria de imagenes gratis PHP / MySql
- Siguiente: Dacio´s Login. Login de acceso php »


septiembre 16th, 2008 a las 6:47 am
hola hola, tengo una pregunta relacionada a la fecha, poseo una funcion que me presenta la seelccion de al feca como tres listas(dia-mes-año), pero lo que no logro es asignar o devolver una variable con el valor de la fecha para ingresarlo a mysql en formato aaaa-mm-dd, a continuacion les presento el codigo:
//Define Inicio de Rango de Fecha o Simplemente una fecha
function procFecIni() {
//Generando cmb de Dias
$retorno = “”;
$dia=date(“d”);
$limitedia=31;
for ($i=1;$i<=$limitedia;$i++){
$retorno .= “”;
}else{
$retorno .= “>”;
}
$retorno .= “$i\n”;
}
$retorno .= “/”;
//Generando cmb de Meses
$retorno .= “”;
//setlocale(“LC_ALL”,”SP”);
$mes=date(“m”);
for ($i=1;$i<13;$i++){
if ($i<10){
$retorno .= “<option value=\”$i\”";
} else {
$retorno .= “”;
}else{
$retorno .= “>”;
}
switch ($i) {
case 1:
$nmes=”ene”;
break;
case 2:
$nmes=”feb”;
break;
case 3:
$nmes=”mar”;
break;
case 4:
$nmes=”abr”;
break;
case 5:
$nmes=”may”;
break;
case 6:
$nmes=”jun”;
break;
case 7:
$nmes=”jul”;
break;
case 8:
$nmes=”ago”;
break;
case 9:
$nmes=”sep”;
break;
case 10:
$nmes=”oct”;
break;
case 11:
$nmes=”nov”;
break;
case 12:
$nmes=”dic”;
break;
}
$retorno .= “$nmes \n”;
}
$retorno .= “/”;
//Generando cmb de años
$retorno .= “”;
$ano=date(“Y”);
$anoa = $ano-50;
//$anoa=$ano-1;
while($ano>=$anoa) {
if($anoa==$ano) {
$retorno .= “$anoa\n”;
} else {
$retorno .= “$anoa\n”;
}
$anoa++;
}
//$retorno .= “$ano\n”;
$retorno .= “”;
return $retorno;
}