Agregar días a $Date en PHP

Resuelto Istari asked hace 54 años • 13 respuestas

Tengo una fecha devuelta como parte de una consulta MySQL en el formulario 2010-09-17.

Me gustaría configurar las variables $Date2 a $Date5 de la siguiente manera:

$Date2 = $Date + 1

$Date3 = $Date + 2

etc., para que devuelva 2010-09-18, 2010-09-19, etc.

Yo he tratado

date('Y-m-d', strtotime($Date. ' + 1 day'))

pero esto me da la fecha anterior $Date .

¿Cuál es la forma correcta de obtener mis fechas en el formato 'Ymd' para que puedan usarse en otra consulta?

Istari avatar Jan 01 '70 08:01 Istari
Aceptado

Todo lo que tienes que hacer es usar daysen lugar de dayasí:

<?php
$Date = "2010-09-17";
echo date('Y-m-d', strtotime($Date. ' + 1 days'));
echo date('Y-m-d', strtotime($Date. ' + 2 days'));
?>

Y sale correctamente:

2010-09-18
2010-09-19
shamittomar avatar Sep 16 '2010 14:09 shamittomar

Si estás usando PHP 5.3, puedes usar un DateTimeobjeto y su addmétodo:

$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->add(new DateInterval('P1D')); // P1D means a period of 1 day
$Date2 = $date->format('Y-m-d');

Eche un vistazo a la página del manual DateIntervaldel constructor para ver cómo construir otros períodos para agregar a su fecha (2 días serían 'P2D', 3 serían 'P3D', y así sucesivamente).

Sin PHP 5.3, deberías poder usarlo strtotimecomo lo hiciste (lo probé y funciona tanto en 5.1.6 como en 5.2.10):

$Date1 = '2010-09-17';
$Date2 = date('Y-m-d', strtotime($Date1 . " + 1 day"));
// var_dump($Date2) returns "2010-09-18"
Daniel Vandersluis avatar Sep 16 '2010 14:09 Daniel Vandersluis

Desde PHP 5.2 en adelante puedes usar modificar con un objeto DateTime:

http://php.net/manual/en/datetime.modify.php

$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->modify('+1 day');
$Date2 = $date->format('Y-m-d');

Ojo al sumar meses... (y en menor medida años)

Omn avatar Jan 28 '2015 18:01 Omn

Aquí hay un pequeño fragmento para demostrar las modificaciones de fecha:

$date = date("Y-m-d");
//increment 2 days
$mod_date = strtotime($date."+ 2 days");
echo date("Y-m-d",$mod_date) . "\n";

//decrement 2 days
$mod_date = strtotime($date."- 2 days");
echo date("Y-m-d",$mod_date) . "\n";

//increment 1 month
$mod_date = strtotime($date."+ 1 months");
echo date("Y-m-d",$mod_date) . "\n";

//increment 1 year
$mod_date = strtotime($date."+ 1 years");
echo date("Y-m-d",$mod_date) . "\n";
Madhu V Rao avatar Feb 25 '2013 06:02 Madhu V Rao