1,9Mil
AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.
Bueno, en el post que voy a dejar aquí hoy, voy a intentar realizar un ejercicio sencillo. En el vamos a empezar a ver algunas cosas relacionadas con la programación orientada a objetos en PHP para calcular la diferencia entre dos fechas.
El ejercicio trata sobre realizar un formulario. Con el vamos a calcular la diferencia entre dos fechas, usando la aproximación a objetos de PHP. Esta aproximación se hará con Datetime y diff.
Bueno, explicado el ejercicio … vamos al tema.
Calcula la diferencia entre dos fechas, usando la aproximación a objetos
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Práctica 26</title>
</head>
<body>
<?php
if (isset($_POST['Enviar'])) {
//Guardamos las los datos introducidos por el usuario dentro de variables
$dia = intval($_POST['dia']);
$mes = intval($_POST['mes']);
$anho = intval($_POST['anho']);
//Comprobamos si las variables están vacías.
if (empty($dia) || empty($mes) || empty($anho)) {
echo "ERROR!! los datos introducidos son erroneos o algún campo está en blanco. ";
echo " <a href='index.php' title='Volver'>Volver</a>";
} else {
//Comprobamos si el número que el usuario ha ingresado un número
//menor que 31 en los días y que el número ingresado como mes es menor
//que doce.
if ($dia > 31 || $mes > 12) {
echo "ERROR!! en los datos de la fecha proporcionada.";
echo " <a href='index.php' title='Volver'>Volver</a>";
} else {
//Guardamos las fechas en variables.
//$date1 guarda la fecha introducida y $date2 guarda la fecha de hoy.
$date1 = new DateTime($anho . "-" . $mes . "-" . $dia);
$date2 = new DateTime('NOW');
//Comprobamos que la fecha ingresada no es mayor que la fecha actual
if ($date2 < $date1) {
echo "ERROR!! la fecha que has escrito tiene que ser anterior a la fecha de hoy.";
echo " <a href='index.php' title='Volver'>Volver</a>";
} else {
//Calcula el valor absoluto de la diferencia de entre las fechas
$diff = $date2->diff($date1, true);
echo "Han transcurrido " . $diff->format('%a días') . " desde la fecha que has escrito y el día de hoy.";
echo " <a href='index.php' title='Volver'>Volver</a>";
}
}
}
} else {
?>
<!--Formulario de envío-->
<form action="index.php" method="post" name="form" id="form"><!--Inicio formulario-->
<table align="center" border="1" >
<tr><!--línea texto-->
<td align="center" colspan="2" bgcolor="#f0f0f0">
<h5>
Escribe una fecha a comparar con el día de hoy
</h5>
</td>
</tr><!--Fin de la línea texto-->
<tr><!--Línea fecha-->
<td bgcolor="#f0f0f0">Fecha: </td>
<td align="center">
Día<input type="text" name="dia" size="2" maxlength="2">
Mes<input type="text" name="mes" size="2" maxlength="2">
Año<input type="text" name="anho" size="4" maxlength="4">
</td>
</tr><!--Fin de la línea fecha-->
<tr><!--línea de botones-->
<td align="center" bgcolor="#f0f0f0" colspan="2">
<input type="submit" value="enviar" name="Enviar" title="Enviar" />
||
<input type="reset" value="borrar" name="borrar" title="borrar" />
</td>
</tr><!--Fin línea de botones-->
</table><!--FIN de la tabla-->
</form><!--Fin del formulario-->
<?php
} //cerramos el else para evitar que se imprima en el resultado en la misma
//página que el formulario.
?>
</body>
</html>

2 Comentarios
Muchas gracias, el ejemplo me sirvió muchísimo, saludos desde Argentina :)
Me alegra que te haya sido útil :)