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 :)