Lenguaje PHP

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 -->
Calcular diferencia entre dos fechas Datetime PHP
Calcular diferencia entre dos fechas Datetime PHP

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
}
?>
Diferencia entre dos fechas Datetime con PHP
Diferencia entre dos fechas Datetime con 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.

DEMOSTRACIÓN

Ver Demo

DESCARGA

Descargar Código Fuente

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba