Está en la página 1de 7

PHP

SESIÓN 08
FUNCIONES DE FECHA Y HORA

V-8-1
1. Función getdate

En este ejercicio haremos una consultare la fecha y hora exacta de nuestro equipo (servidor).

eje1.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Instituto Hipólito Unanue</title>
</head>
<body>

<?php
$datos=getdate();
foreach($datos as $clave => $valor){
echo $clave . ": " . $valor ."<br>";
}

echo "<hr>";
echo "Hoy es: " . $datos['mday']. " de " . $datos['mon'].
" del " . $datos['year'] ;
?>

</body>
</html>

getdate() nos devuelve toda la información relacionada a la fecha y hora de nuestro servidor, luego
la almacenamos en la variable $datos convirtiéndose en un vector.

$datos=getdate();

Luego recorremos el vector $datos con la instrucción foreach dándole los valores y la estructura que
ya conocemos. Posteriormente imprimimos los valores que obtuvimos llamando a las variables
$clave y $valor.

foreach($datos as $clave => $valor){


echo $clave . ": " . $valor ."<br>";
}

Finalmente podemos utilizar las claves obtenidas en el arreglo anterior como “mday”, ”mon” o “year”
para mostrar un mensaje como el siguiente:

echo "Hoy es: " . $datos['mday']. " de " . $datos['mon'].


" del " . $datos['year'] ;

Steve Jobs – Juntos hacia tu éxito -1-


PHP

V-8-2
2. Función time

Devuelve el número de segundos transcurridos desde el 1 de Enero de 1970, a esta forma de


expresar fecha y hora se le denomina timestamp.

Realicemos un ejercicio el cual nos permita averiguar los años, meses, horas, días, minutos y
segundos que han transcurrido desde el año 1970 hasta la fecha actual.

eje2.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Instituto Hipólito Unanue</title>
</head>
<body>

<?php

//$datos=getdate();
//$seg=$datos['0'];
$seg=time();
$min=$seg/60;
$horas=$min/60;
$dias=$horas/24;
$meses=$dias/30;
$anios=$meses/12;

echo "Segundos: ". $seg . "<br>";


echo "Minutos: ". $min . "<br>";
echo "Días: ". $horas . "<br>";
echo "Horas: ". $dias . "<br>";
echo "Meses: ". $meses . "<br>";
echo "Años: ". $anios . "<br>";
?>
</body>
</html>

Esta instrucción devuelve los segundos transcurridos desde el 1 de enero de 1970.

$seg=time();

Luego utilizando la operación de división con lo cual obtendremos los demás datos de la siguiente
manera:

$min=$seg/60;
$horas=$min/60;
$dias=$horas/24;
$meses=$dias/30;
$anios=$meses/12;

Por ultimo imprimimos cada variable con un mensaje.

echo "Segundos: ". $seg . "<br>";

Steve Jobs – Juntos hacia tu éxito -2-


PHP

V-8-3
3. Función date

La función date devuelve una cadena formateada según los código de formato. Si no le pasamos la
variable timestamp nos devuelve la cadena formateada para la fecha y la hora actual.

Sintaxis: date(formato, timestamp)

Los códigos de formato para la función date son:

CÓDIGO DESCRIPCIÓN
a am o pm
A AM o PM
d Día del mes con ceros
D Abreviatura del día de la semana (inglés)
F Nombre del mes (inglés)
h Hora en formato 1-12
H Hora en formato 0-23
i Minutos
j Día del mes sin ceros
l Día de la semana
m Número de mes (1-12)
M Abreviatura del mes (inglés)
s Segundos
y Año con 2 dígitos
Y Año con 4 dígitos
Z Día del año (1-365)

El siguiente ejercicio nos permite mostrar determinadas fechas invocando a la función date.

eje3.php
<html>
<head>
<title>Instituto Hipólito Unanue</title>
</head>
<body>
<?php

echo "Función date<br>";


echo "<hr>";
echo date("d-m-y")."<br>";
echo date("H:i:s")."<br>";
echo date("Y")."<br>";
echo date("D")."<br>";
echo date("M")."<br>";
echo date("d/m/y h:i a")."<br>";
echo date("d-m-y h:i", time())."<br>";

?>
</body>
</html>

Llamamos a la función date y entre paréntesis el formato de salida que le deseemos aplicar.

echo date("d-m-y")."<br>";

Steve Jobs – Juntos hacia tu éxito -3-


PHP

V-8-4
4. Función mkTime

La función mktime devuelve una variable (fecha) pero expresada en segundos a partir de las
coordenadas dadas.

eje4.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Instituto Hipólito Unanue</title>
</head>
<body>
<?php

echo "Función mktime<br>";


$seg=mktime(0,0,0,8,21,2011);
echo $seg."<br>";
echo date("d-m-Y D",$seg);
?>
</body>
</html>

Empleamos la función mktime y colocamos entre paréntesis la estructura: hora, minutos, segundos,
mes, día y el año.
$seg=mktime(0,0,0,8,21,2011);

Imprimimos la variable donde se guardó el contenido y luego le podemos aplicar un formato de


salida con date.

echo $seg."<br>";
echo date("d-m-Y D",$seg);

V-8-5
5. Función checkdate

La función chekdate comprueba si una fecha es válida, si es así devuelve TRUE y si no FALSE.
Una fecha se considera válida si el año está entre 1900 y 32767, el mes entre 1 y 12, y el día es
menor o igual que número de días total del mes en cuestión.

eje5.php
<html>
<head>
<title>Instituto Hipólito Unanue</title>
</head>
<body>
<?php
if(checkdate(12,15,2000)){
echo "La fecha es correcta";
}else{
echo "La fecha es incorrecta";
}
?>
</body></html>

Steve Jobs – Juntos hacia tu éxito -4-


PHP
Comprobamos si na fecha existe o no, llamando a la función chekdate.

if(checkdate(12,15,2000)){

V-8-6
6. Validar fecha a través de un formulario

En el siguiente programa enviaremos tres valores día, mes y año y se hará la comprobación de que
sean fechas válidas o no.

eje5-2.php
<html>
<head>
<meta charset="utf-8">
<title>Instituto Hipólito Unanue</title>
</head>
<body>

<form action="eje5-2.php" method="post">


Día: <input type="text" name="dia"><br>
Mes: <input type="text" name="mes"><br>
Año: <input type="text" name="anio"><br>
<input type="submit" action="validar">
</form>

<?php
$dia=$_REQUEST['dia'];
$mes=$_REQUEST['mes'];
$anio=$_REQUEST['anio'];

if(checkdate($mes,$dia,$anio)){
echo "La fecha es correcta";
}else{
echo "La fecha es incorrecta";
}
?>
</body>
</html>

Nos preguntamos si lo ingresado en las variables de $mes, $dia y $anio son correctas si fuera así
entonces nos mostraría su respectivo mensaje sino entraría al else.

if(checkdate($mes,$dia,$anio)){

V-8-7
7. Mostrar una fecha de manera personalizada

Realicemos un programa que valide una fecha ingresada en un formulario y además que nos
devuelva un mensaje indicándonos en forma de texto dicha fecha.

eje7.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Instituto Hipólito Unanue</title>

Steve Jobs – Juntos hacia tu éxito -5-


PHP

</head>
<body>

<form action="eje7.php" method="post">


Día: <input type="text" name="dia"><br>
Mes: <input type="text" name="mes"><br>
Año: <input type="text" name="anio"><br>
<input type="submit" action="validar">
</form>

<?php

$dia=$_REQUEST['dia'];
$mes=$_REQUEST['mes'];
$anio=$_REQUEST['anio'];

if(checkdate($mes,$dia,$anio)){
echo "La fecha es correcta";
$segundos=mktime(0,0,0,$mes, $dia, $anio);
$diasem=date("l",$segundos);
echo "<br>$diasem<br>";

switch($diasem){
case "Monday" : $b="Lunes"; break;
case "Tuesday" : $b="Martes"; break;
case "Wednesday" : $b="Miercoles"; break;
case "Thursday" : $b="Jueves"; break;
case "Friday" : $b="Viernes"; break;
case "Saturday" : $b="Sábado"; break;
case "Sunday" : $b="Domingo"; break;
}

switch($mes){
case 1: $a="Enero"; break;
case 2: $a="Febrero"; break;
case 3: $a="Marzo"; break;
case 4: $a="Abril"; break;
case 5: $a="Mayo"; break;
case 6: $a="Junio"; break;
case 7: $a="Julio"; break;
case 8: $a="Agosto"; break;
case 9: $a="Setiembre"; break;
case 10: $a="Octubre"; break;
case 11: $a="Noviembre"; break;
case 12: $a="Diciembre"; break;
}

echo "<br> Hoy es $b $dia del $a del $anio <br>";

}else{
echo "La fecha es incorrecta";
}
?>
</body>
</html>

Steve Jobs – Juntos hacia tu éxito -6-


PHP

Si la fecha ingresada es correcta entonces imprimimos un mensaje, luego utilizamos la función


mktime para deducir cuantos segundos han transcurrido desde el 1 de enero de 1970 hasta la fecha
indicada y el resultado lo almacenamos en la variable $segundos.

if(checkdate($mes,$dia,$anio)){
echo "La fecha es correcta";
$segundos=mktime(0,0,0,$mes, $dia, $anio);

Luego utilizando la función date nos preguntamos a que día de la semana perteneció esta cantidad
de segundos transcurridos que nos devolvió $segundos, muy importante mandarle como parámetro
la letra “l”.

$diasem=date("l",$segundos);

Seguidamente transformaremos el contenido de la variable $diasem al español ya que por defecto


este valor estará en ingles, es por ello que utilizaremos switch con cada uno de los días de la
semana.

switch($diasem){
case "Monday" : $b="Lunes"; break;
case "Tuesday" : $b="Martes"; break;

En el segundo switch realizamos las conversiones para los meses, por ejemplo caso que
ingresemos 1 que $a valga Enero, caso que sea 2 que valga Febrero y así con los siguientes.

switch($mes){
case 1: $a="Enero"; break;
case 2: $a="Febrero"; break;

Por último mostramos el mensaje invocando a cada variable que contiene lo que requerimos; $b
que es el día transformado a español, $dia en números, $a el cual transformamos a formato de texto
y el año contenido en $anio.

echo "<br> Hoy es $b $dia del $a del $anio <br>";

Steve Jobs – Juntos hacia tu éxito -7-