Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/05/2008, 14:51
Charly7879
 
Fecha de Ingreso: octubre-2006
Ubicación: Argentina Mendoza
Mensajes: 2
Antigüedad: 17 años, 6 meses
Puntos: 1
Función para mostrar fechas en Español

Despues de haberme quitado tantas dudas Foros del Web, es hora de que aporte mi granito de arena; así que aca les mando una o unas funciones para las fechas ya que siempre nos hacen falta para nuestros proyectos y a veces nunca le dedicamos
tiempo.

Una de las funciones nos puede servir para poder poner la fecha en cualquier formato al Español ya sea por mes, año y día.

Otra nos puede servir en caso de un Foro o un Blog para mostrar cuando se ha creado un articulo mostrando la fecha si el Articulo fue creado hoy nos saldría algo como esto: Articulo Hoy: 22:30 hs. Sí fue creado ayer nos saldría: Ayer 22:30 hs.
y por último si no es ni hoy ni ayer nos saldría esto: 05-10-08 22:30 hs.

También está incluida una función para decir cuando un Usuario cumple años, esta se utiliza sabiendo obviamente la fecha de nacimiento. Por ejemplo: Sí mi fecha de nacimiento es el 1979-03-05 (Formato en Ingles), La función de cumpleaños me escribiría que cumplo años el 05 de Marzo de, 2009.

Este es código de la primera Función que permite escribir una fecha en cualquier formato, por Ejemplo:

Sí queremos cambiar una fecha de la base de datos al Español sería así:

cambiar_fecha($sql[mi-fecha], "d-m-Y");

Paso a explicar: Le pasamos a la función el dato que queremos cambiar en este caso es desde la base de datos "mi-fecha" y después le decimos en que formato la queremos transformar. Esto imprimiría algo como esto 28-11-2008.

Sí queremos que también nos muestre la hora solo ponemos "H:i" que esto quiere decir H (mayúscula) horas e i (minúscula) minutos:

cambiar_fecha($sql[mi-fecha], "d-m-Y H:i");

Y sí queremos con más precisión, solo agregamos los segundos s (minúscula).

cambiar_fecha($sql[mi-fecha], "d-m-Y H:i:s");

Y sí queremos cambiar una fecha en Español que recogemos de un formulario y la queremos insertar en la base de datos ponemos la fecha en Ingles que sería:

cambiar_fecha($_POST['fecha'], "Y-m-d");

También de la misma manera que muestra los datos Hora y Minutos y Segundos se lo podemos agregar cuando recibimos la fecha del formulario.

//Hora que se subieron los datos del formulario

$hora = Date("H:i:s");

cambiar_fecha($_POST['fecha'], "Y-m-d $hora");


Otras funciones que se pueden hacer con esta función:

Mostrar sólo el año en 4 cifras: cambiar_fecha($sql[mi-fecha], "Y");

Mostrar sólo el año en 2 cifras: cambiar_fecha($sql[mi-fecha], "y");

Mostrar el Mes en número: cambiar_fecha($sql[mi-fecha], "m");

Mostrar el Mes con tres letras en Español: cambiar_fecha($sql[mi-fecha], "M");

Mostrar el Mes completo en Español: cambiar_fecha($sql[mi-fecha], "F");

Mostrar el día en númors: cambiar_fecha($sql[mi-fecha], "d");



El codigo fuente de esta función es:

//FUNCION PARA CAMBIAR FECHA
function cambiar_fecha($fecha, $formato){

$H="00"; $i="00"; $s="00"; $F=""; $M=""; $num_mes=0;

$Meses = array("","Enero","Febrero","Marzo","Abril","Mayo", "Junio","Julio",
"Agosto","Septiembre","Octubre","Noviembre","Dicie mbre");
$meses = array("","Ene","Feb","Mar","Abr","May","Jun","Jul" ,"Ago","Sep","Oct","Nov","Dic");

//Fecha recibida en ingles con hora
if(ereg( "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $fecha, $mifecha)){
$num_mes=$mifecha[2]; settype($num_mes, "integer");
$d=$mifecha[3]; $m=$mifecha[2]; $F=$Meses[$num_mes]; $M=$meses[$num_mes]; $Y=$mifecha[1];
$H=$mifecha[4]; $i=$mifecha[5]; $s=$mifecha[6];
}
//Fecha recibida en español con hora
elseif(ereg( "([0-9]{1,2})-([0-9]{1,2})-([0-9]{4}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $fecha, $mifecha)){
$num_mes=$mifecha[2]; settype($num_mes, "integer");
$d=$mifecha[1]; $m=$mifecha[2]; $F=$Meses[$num_mes]; $M=$meses[$num_mes]; $Y=$mifecha[3];
$H=$mifecha[4]; $i=$mifecha[5]; $s=$mifecha[6];
}
//Fecha recibida en ingles sin hora
elseif(ereg( "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $fecha, $mifecha)){
$num_mes=$mifecha[2]; settype($num_mes, "integer");
$d=$mifecha[3]; $m=$mifecha[2]; $F=$Meses[$num_mes]; $M=$meses[$num_mes]; $Y=$mifecha[1];
}
//Fecha recibida en español sin hora
elseif(ereg( "([0-9]{1,2})-([0-9]{1,2})-([0-9]{4})", $fecha, $mifecha)){
$num_mes=$mifecha[2]; settype($num_mes, "integer");
$d=$mifecha[1]; $m=$mifecha[2]; $F=$Meses[$num_mes]; $M=$meses[$num_mes]; $Y=$mifecha[3];
}

// Variable [y] ultimas dos cifras del año
$y = substr($Y, 2);

$formato = ereg_replace( "d", $d, $formato ); // [d] días
$formato = ereg_replace( "m", $m, $formato ); // [m] mes con numeros
$formato = ereg_replace( "Y", $Y, $formato ); // [Y] año de 4 cifras
$formato = ereg_replace( "y", $y, $formato ); // [y] año de 2 cifras
$formato = ereg_replace( "H", $H, $formato ); // [H] hora de 0 a 23
$formato = ereg_replace( "i", $i, $formato ); // [i] minutos de 0 a 59
$formato = ereg_replace( "s", $s, $formato ); // [s] segundos de 0 a 59
// Tienen que ir al final porque llevan texto para no ser reemplazado
$formato = ereg_replace( "M", $M, $formato ); // [M] mes con 3 letras
$formato = ereg_replace( "F", $F, $formato ); // [F] mes con letras completo

return $formato;
}



Bien ya sabemos la función de cambiar fecha ahora la siguiente función es para saber cuando fue enviado un dato. Como les dije anteriormente en el caso de un Foro o un Blog cuando creamos un articulo y mostrar la fecha que el articulo fue creado.

Esta función depende de la anterior y se llama Imprimir_fecha(). aquí les muestro un ejemplo como funcionaría:

Supongamos que tenemos una tabla en la Base de Datos (Mysql) 0que se llama Articulos_Blog y queremos mostrar la fecha que fué creado el articulo, para esto tendríamos que poner en la funcion imprimir_fecha() el dato de la tabla.

imprimir_fecha(Articulo['fecha_articulo']);

De esta manera la función va a imprimir si el articulo fué creado Hoy, Ayer o mostraría la fecha completa.

Código de la función imprimir_fehca():



//FUNCION IMRRIMIR FECHA
function imprimir_fecha($dato){

$fecha = cambiar_fecha($dato, "Y-m-d");
$hoy = date("Y-m-d");
$ayer_aprox = mktime(0,0,0,date("m") ,date("d")-1,date("Y"));
$ayer = date("Y-m-d", $ayer_aprox);

if($fecha == $hoy){ $fecha = "Hoy: ".cambiar_fecha($dato, "H:i");}

elseif($fecha == $ayer){ $fecha = "Ayer: ".cambiar_fecha($dato, "H:i");}

else{$fecha = cambiar_fecha($dato, "d-m-Y H:i");}

return $fecha;
}





Ahora otra función que muestra cuando un usuario cumple años:

Supongamos que tenemos en la Base de Datos (Mysql) la tabla Usuarios
y queremos saber cuando nuestros usuarios cumplen años tendríamos que hacer
la consulta a la Base de Datos:

//CONSULTA A USUARIOS

$query_Usuarios= mysql_query("SELECT * FROM usuario ORDER BY nombre DESC ");

//HACEMOS UNWHILE PARA MOSTRAR LOS DATOS

while($Usuario = mysql_fetch_array($query_Usuarios)){

echo "<p>Usuario: $Usuario['usuario']</p>";

echo "<p>Nombre: $Usuario['nombre']</p>";

echo "<p>Apellido: $Usuario['apellido']</p>";

//Y PARA MOSTRAR EL CUMPLEAÑOS USAMOS LA FUNCION cumpleano().

echo "<p>Cumpleaños: " .cumpleano($Usuario['fecha_nacimiento']). "años</p>";

}//FIN WHILE


Codigo de la funcion cumpleano:

//FUNCION CUMPLEAÑOS
function cumpleano($dato){

$mes = array("", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");

$fecha = split("[/.-]", $dato);

$d = $fecha[2];
$m = $fecha[1];
$y = $fecha[0];

for($i=1; $i <=12; $i++)
{
if($i == $m){ $mes=$mes[$i]; }
}

if(date("m") < $m){ $anio = date("Y");}

else{
$anio_aprox = mktime(0, 0, 0,date("m"), date("d"), date("Y")+1);
$anio = date("Y", $anio_aprox);}

return $cumpleano = $d." de ".$mes." de ".$anio;

}



Y por último esta función va de yapa! que es para saber cuantos años tienen nuestros Usuario:

Esta función es sumamente fácil lo único que hace es restar la fecha actual con la fecha de nacimiento de nuestros Usuarios.

El codigo es el siguiente:

//FUNCION EDAD
function edad($dato){

$edad = date('Y-m-d') - $dato;

return $edad;

}


Bueno estimados amigos... creo que esto es todo por ahora, cuando tenga un poco más de tiempo voy a seguir mandando más funciones que tengo guardaditas por ahí para mis trabajos.

Saludos a todos Charly!

www.descubramendoza.com