Diferencia entre dos fechas Datetime con PHP
Diferencia entre dos fechas Datetime con PHP. En este artículo veremos la manera de calcular la diferencia entre dos fechas de tipo datetime generadas mediante un formulario HTML. Podemos calcular el año, los meses, los días, las horas, los minutos y los segundos de un determinado rango de fechas ingresadas por el usuario.
La utilización de diferencias de fechas se puede utilizar en varias situaciones o validaciones en el desarrollo de sistemas web.
Usaremos el paremetro DIFF de PHP
Diferencia entre dos fechas Datetime con PHP
Por ejemplo, cuando generamos facturas y los registros de cada producto podemos almacenarlo en tablas temporales, y de un determinado periodo de tiempo se tienen que borrar.
Estructura del ejercicio PHP
Librerías y estilos que usaremos para generar el cuadro de dialogo el cual mostrara el calendario en jQuery. Una vez seleccionado la fecha esta ingresara de manera dinámica a los dos «input» que tenemos en nuestro formulario.
<link type="text/css" href="css/jquery-ui-1.8.13.custom.css" rel="stylesheet" /> <script type="text/javascript" src="js/jquery-1.5.1.min.js"></script> <script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script> <script type="text/javascript" src="js/jquery-ui-timepicker-addon.js"></script> <script type="text/javascript"> $.datepicker.regional['es'] = { closeText: 'Cerrar', prevText: '<Ant', nextText: 'Sig>', currentText: 'Hoy', monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'], monthNamesShort: ['Ene','Feb','Mar','Abr', 'May','Jun','Jul','Ago','Sep', 'Oct','Nov','Dic'], dayNames: ['Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado'], dayNamesShort: ['Dom','Lun','Mar','Mi?','Juv','Vie','Sab'], dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sa'], weekHeader: 'Sm', dateFormat: 'yy-mm-dd', changeMonth: true, changeYear: true, yearRange: '-100:+2', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: '' }; $.datepicker.setDefaults($.datepicker.regional['es']); $(function(){ $('#moda1').datetimepicker({ showSecond: true, timeFormat: 'hh:mm:ss' }); $('#moda2').datetimepicker({ showSecond: true, timeFormat: 'hh:mm:ss', stepHour: 2, stepMinute: 10, stepSecond: 10 }); }); </script>
Un formulario para ingresar las fechas
<!-- Contenido --> <form method="POST" action=""> <div class="form-group"> <label for="fecha">Fecha inicial:</label> <input required type="text" class="form-control" name="fecha1" placeholder="Ingrese fecha inicial" id="moda1" value="<?php if(isset($_POST["fecha1"])){ echo $_POST["fecha1"];}?>"> </div> <div class="form-group"> <label for="fecha">Fecha actual:</label> <input required type="text" class="form-control" name="fecha2" placeholder="Ingrese fecha actual" id="moda2" value="<?php if(isset($_POST["fecha2"])){ echo $_POST["fecha2"];}?>"> </div> <input name="calculo" type="hidden" value="v"> <input class="btn btn-primary" type="submit" value="Calcular diferencia"> </form> <!-- Fin Contenido -->
Codigo PHP que sera el encargado de relizar la operacion de calculo de fechas
<?php if(isset($_POST["calculo"])){ $fecha1=$_POST["fecha1"]; $fecha2=$_POST["fecha2"]; $fechainicial = new DateTime($fecha1); //fecha inicial $fechaactual = new DateTime($fecha2); //fecha de cierre $diferencia = $fechainicial->diff($fechaactual); ?> <ul class="list-group"> <li class="list-group-item"><strong>Años: </strong><?php echo $diferencia->format('%Y Años');?></li> <li class="list-group-item"><strong>Meses: </strong><?php echo $diferencia->format('%m Meses');?></li> <li class="list-group-item"><strong>Dias: </strong><?php echo $diferencia->format('%d Dias');?></li> <li class="list-group-item"><strong>Horas: </strong><?php echo $diferencia->format('%H horas');?></li> <li class="list-group-item"><strong>Minutos: </strong><?php echo $diferencia->format('%i minutos');?></li> <li class="list-group-item"><strong>Segundos: </strong><?php echo $diferencia->format('%s segundos');?></li> </ul> <?php } ?>
CONCLUSIÓN
Si deseabas calcular fechas de tipo» DATETIME» esta es la solución, te dejamos un fichero para que puedan descargarlo e implementarlo en sus sistemas web.
Como les comentaba. Podemos usarlo en varios casos, por ejemplo.
- Calcular citas médicas.
- Edades de alumnos.
- Años de trabajo en la empresa.
- Entre otras opciones, etc.