Agregar días a $Date en PHP
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?
Todo lo que tienes que hacer es usar days
en lugar de day
así:
<?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
Si estás usando PHP 5.3, puedes usar un DateTime
objeto y su add
mé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 DateInterval
del 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 strtotime
como 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"
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)
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";