Como sumar o restar días a una fecha con PHP

En este artículo vamos a ver una de las formas más sencillas de sumar o restar días a una fecha determinada. PHP dispone de una función muy interesante y completa para obtener o dar formato a una fecha. La función date() de PHP la vamos a utilizar para obtener la fecha actual con el formato que deseamos.

El objetivo principal de esta entrada no es saber como funciona la función date() de PHP, sino más bien, sumar o restar un número de días a una fecha. Usaremos la función strtotime(). Una función muy interesante que convierte una descripción de fecha/hora textual en Inglés a una fecha Unix.

Por ejemplo, si queremos sumar 30 días o un mes a la fecha actual, lo podríamos hacer de la siguiente forma:

$date_now = date('d-m-Y');
$date_future = strtotime('+30 day', strtotime($date_now));
$date_future = date('d-m-Y', $date_future);

Tan solo estamos obteniendo la fecha actual y obtenemos la fecha futura sumándole 30 días.

Y si queremos restar 30 días o un mes a la fecha actual, lo podríamos hacer de la siguiente forma:

$date_now = date('d-m-Y');
$date_past = strtotime('-30 day', strtotime($date_now));
$date_past = date('d-m-Y', $date_past);

Ver más ejemplos

 

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (3 votos, promedio: 5,00 de 5)
Cargando…

Comparte en las redes sociales

Escrito por Jose Aguilar - Experto programador Prestashop y Wordpress.

5 comentarios para “Como sumar o restar días a una fecha con PHP

  • Raul Ortiz dice:

    Buen dia Jose, como se haria sumarle dias guardados en una variable a una fecha esta en una variable sacada de la base de datos ?

    Gracias por tu ayuda.

  • lalo dice:

    Buenas noches recurro a usted porque quisiera sumar los dias en esta funcion pero solo logro sumar el año y no me aparece la fecha completa.

    public function assignCommonHeaderData()
    {
    $this->setShopId();
    $id_shop = (int)$this->shop->id;
    $shop_name = Configuration::get(‘PS_SHOP_NAME’, null, null, $id_shop);

    $path_logo = $this->getLogo();

    $width = 0;
    $height = 0;
    if (!empty($path_logo)) {
    list($width, $height) = getimagesize($path_logo);
    }

    // Limit the height of the logo for the PDF render
    $maximum_height = 100;
    if ($height > $maximum_height) {
    $ratio = $maximum_height / $height;
    $height *= $ratio;
    $width *= $ratio;
    }

    $this->smarty->assign(array(

    ‘logo_path’ => $path_logo,

    ‘shop_address’ => $shop_address,

    ‘date’ => $this->date,
    ‘date_2’=>$this->order_invoice->date_add + 10,
    ‘title’ => $this->title,
    ‘shop_name’ => $shop_name,
    ‘shop_details’ => Configuration::get(‘PS_SHOP_DETAILS’, null, null, (int)$id_shop),
    ‘width_logo’ => $width,
    ‘height_logo’ => $height
    ));
    }

  • Marco Oliva dice:

    Jose yo también tengo la misma duda que Raul

    gracias
    Saludos

    • Jose Aguilar dice:

      Siento decir que yo no se la respuesta. Lo dejamos abierto para que alguien que lo sepa responda. Yo a simple vista creo que la fecha que viene de la base de datos se deberá formatear al estilo Y-m-d para procesarla con strtotime().

Deja un comentario

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

*