Sumar y restar horas y minutos con PHP
Sumar y restar horas y minutos con PHP. En este artículo veremos cómo podemos sumar una fecha tipo DATETIME en el lenguaje PHP. Pude ser, declarada en una variable o enviada desde un formulario HTML. Sin embargo, para sumar horas a una fecha hay que tener presente las versiones del PHP.
Las versiones que utilizaremos para este artículo serán el PHP4 y PHP5. Por lo tanto, en las dos versiones la forma de incrementar horas puede variar de manera sustancial y lo detallaremos a continuación.
Sumar y restar horas y minutos con PHP
Para lograr una suma de horas de manera precisa es muy importante decirle a PHP en que zona horaria te encuentras. Ahora, la hora puede variar de acuerdo al país donde te encuentres.
Un ejemplo, si estas en Venezuela no será la misma hora si estas en Chile.
La solución es declarar una función predeterminada del php para indicarle en donde te encuentres y que trabaje con esa hora. Otros usos, por ejemplo guardar un “datetime” exacta cuando se realiza una compra.
<?php // Si estas en Lima Peru Utiliza esta declaracion date_default_timezone_set("America/Lima"); // Si estas en Bolivia Utiliza esta declaracion date_default_timezone_set("America/La_Paz"); // Si estas en Colombia Utiliza esta declaracion date_default_timezone_set("America/Bogota"); ?>
Esta declaración de la función «date_default_timezone_set» se declara al inicio de nuestro fichero PHP, dependiendo del país de residencia. Consulte que declaración es su país.
#1 Sumar y restar horas usando la version PHP 4
Sumar horas en PHP 4
En PHP 4 utilizaremos la función predeterminada «strtotime » para sumar horas.
<?php $mifecha= date('Y-m-d H:i:s'); $NuevaFecha = strtotime ( '+5 hour' , strtotime ($mifecha) ) ; $NuevaFecha = strtotime ( '+18 minute' , $NuevaFecha ) ; $NuevaFecha = strtotime ( '+30 second' , $NuevaFecha ) ; $NuevaFecha = date ( 'Y-m-d H:i:s' , $NuevaFecha); echo $NuevaFecha; ?>
Restar horas en PHP 4
<?php $mifecha= date('Y-m-d H:i:s'); $NuevaFecha = strtotime ( '-5 hour' , strtotime ($mifecha) ) ; $NuevaFecha = strtotime ( '-18 minute' , $NuevaFecha ) ; $NuevaFecha = strtotime ( '-30 second' , $NuevaFecha ) ; $NuevaFecha = date ( 'Y-m-d H:i:s' , $NuevaFecha); echo $NuevaFecha; ?>
#2 Sumar y restar horas usando la version PHP 5
En las versiones de PHP 5 en adelante, utilizaremos el estilo orientado a objetos «new DateTime()».
<?php $mifecha = new DateTime(); $mifecha->modify('+5 hours'); $mifecha->modify('+18 minute'); $mifecha->modify('+30 second'); echo $mifecha->format('d-m-Y H:i:s'); ?>
PHP 5 Restar horas a una fecha tipo DATETIME
<?php $mifecha = new DateTime(); $mifecha->modify('-5 hours'); $mifecha->modify('-18 minute'); $mifecha->modify('-30 second'); echo $mifecha->format('d-m-Y H:i:s'); ?>
Código completo de Sumar y restar Horas con PHP
<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <title>Sumar y restar horas en PHP</title> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="css/bootstrap.min.css" rel="stylesheet"> <head> <body> <?php date_default_timezone_set("America/Lima"); ?> <nav class="navbar navbar-default"> <div class="container"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="./">BaulPHP</a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li ><a href="ListaContactos.php">Inicio <span class="sr-only">(current)</span></a></li> </ul> </div> <!-- /.navbar-collapse --> </div> <!-- /.container-fluid --> </nav> <div class="container"> <div class="row"> <div class="col-md-12"> <!--Inicio elementos contenedor--> <div class="container theme-showcase" role="main"> <div class="page-header"> <h3>Sumar y restar horas en PHP4</h3> </div> <div class="form-group"> <label for="Sumar" class="col-sm-2 control-label">Sumar en PHP4 </label> <div class="col-sm-10"> <?php $mifecha= date('Y-m-d H:i:s'); $NuevaFecha = strtotime ( '+5 hour' , strtotime ($mifecha) ) ; $NuevaFecha = strtotime ( '+18 minute' , $NuevaFecha ) ; $NuevaFecha = strtotime ( '+30 second' , $NuevaFecha ) ; $NuevaFecha = date ( 'Y-m-d H:i:s' , $NuevaFecha); echo $NuevaFecha; ?> </div> </div> <div class="form-group"> <label for="Sumar" class="col-sm-2 control-label">Restar en PHP4 </label> <div class="col-sm-10"> <?php $mifecha= date('Y-m-d H:i:s'); $NuevaFecha = strtotime ( '-5 hour' , strtotime ($mifecha) ) ; $NuevaFecha = strtotime ( '-18 minute' , $NuevaFecha ) ; $NuevaFecha = strtotime ( '-30 second' , $NuevaFecha ) ; $NuevaFecha = date ( 'Y-m-d H:i:s' , $NuevaFecha); echo $NuevaFecha; ?> </div> </div> <div class="page-header"> <h3>Sumar y restar horas en PHP5</h3> </div> <div class="form-group"> <label for="Sumar" class="col-sm-2 control-label">Sumar en PHP5: </label> <div class="col-sm-10"> <?php $mifecha = new DateTime(); $mifecha->modify('+5 hours'); $mifecha->modify('+18 minute'); $mifecha->modify('+30 second'); echo $mifecha->format('d-m-Y H:i:s'); ?> </div> </div> <div class="form-group"> <label for="Sumar" class="col-sm-2 control-label">Restar en PHP5: </label> <div class="col-sm-10"> <?php $mifecha = new DateTime(); $mifecha->modify('-5 hours'); $mifecha->modify('-18 minute'); $mifecha->modify('-30 second'); echo $mifecha->format('d-m-Y H:i:s'); ?> </div> </div> </div> <!--Fin elementos contenedor--> </div> </div> </div> <div class="panel-footer"> <div class="container"> <p>Códigos <a href="https://www.baulphp.com/" target="_blank">BaulPHP</a></p> </div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script src="js/bootstrap.min.js"></script> </body> </html>
CONCLUSIÓN
Sumar horas, minutos y segundos en el lenguaje PHP es muy necesario cuando desarrollamos sistemas web. Se puede usar en varias ocasiones, en rango de fechas predeterminadas para realizar consultas a la base de datos, entre otros usos.
Gracias por visitar mi blog y no se olviden de suscribirse para que estén atento a los últimos artículos relacionados al mundo del PHP.
buenas tardes te hago una consulta como podría agregarle una hora a un formato establecido: por ejemplo: 2022-01-04 00:00:00 –> que quede 2022-01-04 21:42:15, desde ya muchas gracias y muy util todo!
Disculpa como podria hacer una cuenta regresiva php y javascript en una tabla que contiene todos los registros en mi base de datos