Manejo De Fechas Para Insercción En base De Datos

Después de hacer una validación de la fecha en este caso como dato de entrada , continuamos con la insercción , la cual puede resultar un poco confuso, pues, cuando hayamos terminado de validar se nos podrá figurar que ese era todo el proceso que conyeva a la insercción , pero en realidad no. La verdad es que también existen varias funciones que podemos utilizar en estos casos para el siguiente paso que estamos a punto de dar "La Insercción" en la tabla de nuestra base de datos de MySQL.

Recordemos que MySQL tiene YYYY/MM/DD como formato de fecha y tenemos que invertirla al modo al que el usuario este acostumbrado con respecto a su lugar de residencia para tener una mejor usabilidad del sistema.por ejemplo: MM/DD/YY de EE.UU. ó DD/MM/YYYY de México.

Ahora que nos queda un poco mas claro a lo que nos enfrentamos lo primero en que nos vamos a concentrar es que tenemos que invertir el resultado de la validación de la fecha, en este caso tomo $valFecha, pues en esta variable tipo areglo fue donde almacené este resultado de la validación "$valFecha = validaFecha($fecha, $today1);".

Entonces volveré a mostrar la función de la validación para tener una secuencia y una idea mas clara para todos nuestros amigos programadores, tanto principiantes como avanzados y puedan leer y comprender claramente.

function validaFecha($fecha, $today1){

$fecha = explode('/', $fecha, 3);
 $año = $fecha[2];
 $mes = $fecha[1];
 $dia = $fecha[0];
 //valido dia, mes, año
if($año <= $today1["year"] && $mes < 13 && $dia <= 31){
 $date = $año.'-'.$mes.'-'.$dia;
}else{
 $date = 0;  
 }
 return $date;
}

Esta función tiene como parametros $fecha:contiene la fecha introducida por el usuario y $today1: contiene el año actual extraido de una función que devuelve un arreglo con fecha, y hora actual; Ya validada la fecha, devuelve $date: contiene la fecha en caso de ser correcta y sino devolverá '0'. En resumen $valFecha: contiene la nueva fecha insertada por el usuario y validada contra la actual. También notese que la función contiene:

 if($año <= $today1["year"] && $mes < 13 && $dia <= 31){
 $date = $año.'-'.$mes.'-'.$dia;
 }

Esta condición concreta la validación, sí la fecha es correcta entonces el acomodo de esta será YYYY/MM/DD pues de esta forma serán recibidos por MySQL , es decir, la fecha hasta este paso la tenemos insertada YYYY/MM/DD y asi se verá en nuestra tabla, pero ese formato final no es el que deseamos, pues por ejemplo, mi lugar de residencia es México y aqui la fecha la escribimos DD/MM/YYYY, entonces la cuestión es invertirla, a continuación les presento una función que hará que la fecha sea invertida y entonces del lado del servidor la podamos mostrar para apreciación del usuario: 
//funcion que invierte la fecha
function fechaEsp($value) {
 $invertDate =implode("-", array_reverse( preg_split("/\D/", $value) ) );
 
 return $invertDate;
}

En la primera linea presento la función con el parámetro $value; esta variable contiene la fecha que muestro en pantalla y por lo tanto la vamos a invertir.
En la segunda linea , en orden jerarquico primero hago la división de los caracteres que conforman la fecha con la función preg_split("/\D/", $value), después invierto el arreglo con array_reverse( preg_split("/\D/", $value) ), y luego uno los elementos del arreglo con $invertDate =implode("-", array_reverse( preg_split("/\D/", $value) ) );, y almaceno en la variable $invertDate que devolverá la fecha invertida, en formato: DD/MM/YYYY.

Note ahora notamos como quedo la fecha en el formato deseado DD/MM/YYYY.

Nota: es importante tener siempre en cuenta estos pequeños detalles en la creación de nuestro sistema ya que en el futuro no se nos dificultará  leer nuestro sistema y  notar algun posible error y solucionar rapidamente.

Encuesta de Hoy

Qué gadget te gustaria tener?

Acerca de: MG

Es un proyecto sobre un sitio web, donde los usuarios podrán leer noticias y artículos de relevancia sobre todo lo que envuelve a la Tecnología; Escritos por profesionales en los ramos de Diseño Web, Programacion Web, TI, etc.

Leer más...

MundoGeek

Comentarios y Sugerencias por favor a: contactoarroba_1mundogeek.com, Gracias por tu preferencia.

Login Form