1. FECHAS:

Anuncio
Módulo D: Fechas y Cookies
Objetivo del Módulo:
 Facilitar el manejo de fechas y horas en entornos de operación, conversión y
presentación de las mismas
 Emplear las características y beneficios del uso de cookies que permitan
mejorar la experiencia de un usuario en un sitio web
1. FECHAS:
 Establecer la zona horaria Predeterminada
_
<?php date
default_timezone_set('America/Bogota');?>
Descripción: Establece la zona horaria predeterminada usada por todas las
funciones de fecha/hora
 Fecha Actual
date ('d-m-Y');
atributos en orden:
d = Día del mes, 2 dígitos
m= Representación numérica de un mes, 2 dígitos
Y=Representación numérica de un año, 4 dígitos
Más atributos en: http://php.net/manual/es/function.date.php
Descripción: Permite formato a la fecha/hora local del servidor (computador). El
orden de los atributos puede variar según el programador lo desee
1
 Ordenar Fechas
$fecha = new DateTime( ‘1991-07-20’) ;
echo $fechaordenada = $fecha -> format('d-m-Y');
Descripción: Organizar las fechas de acuerdo a la preferencia del usuario o
programador es común, es por ello que en la variable $fecha (puede tomar
cualquier nombre) almacenamos una fecha que deseamos ordenar y en la
variable $fechaordenada gracias a la función format podemos presentar la fecha
en el orden que deseemos.
 Fecha en letras
Cuando necesitemos convertir una fecha en letras para facilitar la utilización
de esta función, debemos pegar las dos siguientes funciones una sola vez al
iniciar en nuestro archivo.
<?php
function conocerDiaSemanaFecha($fecha) {
$dias = array('Domingo', 'Lunes', 'Martes',
'Miércoles', 'Jueves', 'Viernes', 'Sábado'); // en un array
se guardan los días semana
$dia = $dias[date('w', strtotime($fecha))]; //compara
el día y lo ubica en una posición del array $dias
return $dia; //devolvemos el día encontrado en el array
}
function obtenerFechaEnLetra($fecha){
$dia= conocerDiaSemanaFecha($fecha);
$num = date("j", strtotime($fecha));
$anno = date("Y", strtotime($fecha));
$mes = array('enero', 'febrero', 'marzo', 'abril',
'mayo', 'junio', 'julio', 'agosto', 'septiembre',
'octubre', 'noviembre', 'diciembre');
$mes = $mes[(date('m', strtotime($fecha))*1)-1];
return array ($dia, $num,$mes,$anno);
}
?>
2
Después de haber pegado las dos funciones al iniciar el archivo podemos
utilizarlas. Ahora presentaremos un ejemplo como llamarlas
$fecha = date ('d-m-Y');
Obtenemos la fecha actual y la guardamos en la variable fecha, podemos
asignar la fecha que deseemos para el ejemplo utilizaremos la fecha actual
ObtenerFechaEnLetra($fecha);
Llamamos a la función que ubicamos anteriormente, la cual nos permite obtener
la fecha en letras y le enviamos la fecha que queremos dar formato
list ($dialetras, $dianum,$mesletras,$anno) =
obtenerFechaEnLetra($fecha);
Solicitamos a la función obtenerFechaEnLetra($fecha); que nos envié los
resultados de nuestra solicitud y las almacenamos en un listado de variables
echo "fecha ".$dialetras.', '.$dianum.'
'.$anno;
'.$mesletras.'
Presentamos la fecha según el orden de nuestra preferencia para el usuario (No
es obligatorio utilizar todas las variables para mostrarlas, de igual forma el orden
puede ser aleatorio)
 Disminuir(n) o Adicionar días,semanas,meses,años a una
fecha
$fecha = '20-07-1991';
echo date('d-m-Y', strtotime('-1 day',
strtotime($fecha))).'<br>' ; // resta 1 día
echo date('d-m-Y', strtotime('-1 week',
strtotime($fecha))).'<br>' ; // resta 1 semana
echo date('d-m-Y', strtotime('-1 month',
strtotime($fecha))).'<br>' ; // resta 1 mes
echo date('d-m-Y', strtotime('-1 year',
strtotime($fecha))).'<br>' ; // resta 1 año
 Elementos de la función:
echo date('Formato_fecha_deseado’, strtotime('-N day', strtotime($fecha))).'<br>' ;
3
 Diferencia entre dos fechas
Al igual que en la función de convertir fechas en letras para facilitar la
diferencia entre fechas vamos a ubicar la siguiente función al iniciar nuestro
archivo
$fecha = '20-07-1991';
echo date('d-m-Y', strtotime('-1 day',
strtotime($fecha))).'<br>' ; // resta 1 día
echo date('d-m-Y', strtotime('-1 week',
strtotime($fecha))).'<br>' ; // resta 1 semana
echo date('d-m-Y', strtotime('-1 month',
strtotime($fecha))).'<br>' ; // resta 1 mes
echo date('d-m-Y', strtotime('-1 year',
strtotime($fecha))).'<br>' ; // resta 1 año
Después de posicionar la función vamos a presentar un ejemplo como llamarla
$fecha_inicial ='07-06-2016'; //definimos una fecha inicial
menor a la final
$fecha_final ='20-07-2016' ; //definimos una fecha final
mayor a la inicial
diferenciaentrefechas($fecha_inicial,$fecha_final);
//llamamos a la función diferenciaentrefechas y enviamos
$fecha_inicial y $fecha_$fecha_final en su respectivo orden
list ($dia, $mes, $año) =
diferenciaentrefechas($fecha_inicial,$fecha_final);
//Guardamos en una lista la cantidad de días, meses y años
de diferencia entre fechas
echo "falta(n): ".$dia." día(s)".'<br>'; //presentamos los
días de diferencia
echo "falta(n): ".$mes." mes(es)".'<br>'; //presentamos
los meses de diferencia
echo "falta(n): ".$año." año(s)".'<br>'; //presentamos
los años de diferencia
4
2.Horas:
Hora Actual en horas, minutos,segundos
date('g:i:s a');
echo "Hora en formato 12 horas: ".date('g:i:s a').'<br>';
date('H:i:s');
echo "Hora: en formato 24 horas: ".date('H:i:s').'<br>';
 Adicionar o disminuir (n)horas,minutos,segundos a una hora
$hora = "10:00:00 am";
echo date('g:i:s a', strtotime('+1 hour',
strtotime($hora))).'<br>' ; // resta 1 hora
echo date('g:i:s a', strtotime('+1 minutes',
strtotime($hora))).'<br>' ; // resta 1 día
echo date('g:i:s a', strtotime('+1 seconds',
strtotime($hora))).'<br>' ; // resta 1 día
 Ordenar Formato 12 a 24 y viceversa
$hora_en_formato_12_horas
strtotime("13:30"));
$hora_en_formato_24_horas
PM"));
= date("g:i a",
= date("H:i", strtotime("1:30
 Diferencia entre horas
Como lo observamos con el trabajo de fechas para facilitar el manejo de
restar horas copiaremos la función restar horas al iniciar nuestro archivo una
sola ves.
function restar_horas ($hora_inicial,$hora_final) {
date_default_timezone_set('America/Bogota');
$hora_inicial_en_formato_24h = date("H:i:s",
strtotime($hora_inicial));
5
$hora_final_en_formato_24h = date("H:i:s",
strtotime($hora_final));
$hora_inicial = new DateTime($hora_inicial_en_formato_24h);
$hora_final = new DateTime($hora_final_en_formato_24h);
//new DateTime -> creamos un objeto de tipo fecha
$diferencia = $hora_final->diff($hora_inicial);//new
DateTime -> creamos un objeto de tipo fecha
$horas =$diferencia->format('%h');
$minutos =$diferencia->format('%i');
$segundos =$diferencia->format('%s');
return array($horas,$minutos,$segundos);
}
Despues de haber ubicado nuestra función la llamaremos , para ello…
$hora_inicial = date("g:i:s a"); //definimos una hora
inicial, menor a la hora final
$hora_final = '10:00:00 pm'; // definimos una hora
final,mayor a la inicial
list($horas,$minutos,$segundos)
=restar_horas($hora_inicial,$hora_final) ;
//llamamos la función restar horas y le enviamos la hora
inicial y hora final, y guardamos las horas,minutos y
segundos en una lista
echo "La diferencia es ".$horas.' horas '.$minutos.'
minutos '.$segundos.' segundos'; // finalmente presentamos
en el orden de nuestro gusto la diferencia en horas minutos
y segundos
COOKIES
La principal utilidad de las cookies (galletas) es la de solventar el problema de la
falta de estado en la navegación a través de las páginas web. Las Cookies
proveen un mecanismo que permite guardar pequeñas cantidades de
información. Esto permite mantener configuración que el usuario usa en el sitio
web como colores de fondo, opciones de ordenamiento o nombres que ya han
ingresado y no desean volver a ingresar cada vez que accedan. Antes de
implementar las Cookies hay que tener en cuenta que el usuario las puede
deshabilitar, por lo tanto no es recomendable hacer un sitio web que dependa de
esto para funcionar..
6
Como Crear una Cookie
setcookie('nombrecookie', 'valor', tiempo_duración);
Ejemplo: setcookie('nombreUsuario', 'Pedro', time() +
4800);
Ejemplo Práctico
<form action="" method="post">
<p> En el presente ejemplo utilizaremos cookies para
verificar que un usuario ha ingresado más de una ves a
nuestro sitio web, el cual se le aplicar gran variedad de
utilidades por ejemplo para validar que una persona pueda
votar una sola vez en un tiempo determinado, etc.
</p>
<p>
<label>Identificación</label>
<input name="cod" type="text" placeholder="Ingresar
identificación" />
</p>
<p>
<input name="" type="submit" value="Ingresar"/>
</p>
</form>
<?php
if (isset($_POST['cod'])){//si el usuario digito su número
de identificación
if (isset($_COOKIE['visita'])) { // si existe la cookie
visita
echo "Gracias por visitarnos nuevamente
".$_POST['cod']; // el usuaro ya ingresó por segunda ves
} else {
setcookie("visita", $_POST['cod'] , time() + 3600);
//creamos una nueva cookie para el Nuevo visitante que va
a durar una hora.
echo "Bienvenido por primera vez"; //el usuario
ingreso por primera ves
}
}
?>
7
Ejercicios
Ejercicio 1: Ordenar fecha
Solicitar una fecha al usuario y después de pulsar el botón ordenarla en Años,meses,días
Ejercicio 2: Fecha de nacimiento en letras
Solicitar al usuario su fecha de nacimiento y después de presionar el botón presentar su fecha
de nacimiento en letras
Ejercicio 3: Recordatorio de eventos en días
Solicitar al usuario un evento y un número de días dentro de los cuales se le recordará,
cuando presione el botón debe mostrarse el evento y que día se le notificará
Ejercicio 4: Tiempo restante para la final de la copa América
Determinar tiempo restante para la final de la copa América 27 de junio de 2016
8
Bibliografia y Cibergrafia
http://php.net/manual/es/book.datetime.php
http://php.net/manual-lookup.php?pattern=cookie&scope=quickref
9
Descargar