Tengo una variable llamada que $effectiveDate
contiene la fecha 2012-03-26 .
Estoy tratando de agregar tres meses a esta fecha y no lo he logrado.
Esto es lo que he probado:
$effectiveDate = strtotime("+3 months", strtotime($effectiveDate));
y
$effectiveDate = strtotime(date("Y-m-d", strtotime($effectiveDate)) . "+3 months");
¿Qué estoy haciendo mal? Ninguna pieza de código funcionó.
1340649000
como respuesta, que parece ser correcta.$effectiveDate
almacena lo que crees que almacena? Funciona para mi .date('Y-m-d', 1340661600)
da lo2012-06-26
que ES correcto.Respuestas:
Cambiarlo a esto le dará el formato esperado:
$effectiveDate = date('Y-m-d', strtotime("+3 months", strtotime($effectiveDate)));
fuente
"+ '$months' months"
no funciona$offset = 5; echo date('Y-m-d', strtotime("+$offset months", strtotime('2000-01-01')));
DemoEsta respuesta no es exactamente a esta pregunta. Pero agregaré esto ya que esta pregunta aún se puede buscar sobre cómo agregar / deducir un período de la fecha.
$date = new DateTime('now'); $date->modify('+3 month'); // or you can use '-90 day' for deduct $date = $date->format('Y-m-d h:i:s'); echo $date;
fuente
Supongo que con "no funcionó" quiere decir que le está dando una marca de tiempo en lugar de la fecha formateada, porque lo estaba haciendo correctamente:
$effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); // returns timestamp echo date('Y-m-d',$effectiveDate); // formatted version
fuente
Debe convertir la fecha en un valor legible. Puede usar strftime () o date ().
Prueba esto:
$effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); $effectiveDate = strftime ( '%Y-%m-%d' , $effectiveDate ); echo $effectiveDate;
Esto debería funcionar. Me gusta usar strftime mejor, ya que se puede usar para la localización, es posible que desee probarlo.
fuente
La respuesta de Tchoupi se puede hacer un poco menos detallada al concatenar el argumento para strtotime () de la siguiente manera:
$effectiveDate = date('Y-m-d', strtotime($effectiveDate . "+3 months") );
(Esto depende de los detalles mágicos de la implementación, pero siempre puedes echarles un vistazo si desconfías con razón)
fuente
Lo siguiente debería funcionar, intente esto:
$effectiveDate = strtotime("+1 months", strtotime(date("y-m-d"))); echo $time = date("y/m/d", $effectiveDate);
fuente
Lo siguiente debería funcionar
$d = strtotime("+1 months",strtotime("2015-05-25")); echo date("Y-m-d",$d); // This will print **2015-06-25**
fuente
Agregue n días, meses y años
$n = 2; for ($i = 0; $i <= $n; $i++){ $d = strtotime("$i days"); $x = strtotime("$i month"); $y = strtotime("$i year"); echo "Dates : ".$dates = date('d M Y', "+$d days"); echo "<br>"; echo "Months : ".$months = date('M Y', "+$x months"); echo '<br>'; echo "Years : ".$years = date('Y', "+$y years"); echo '<br>'; }
fuente
Lo siguiente debería funcionar, pero es posible que deba cambiar el formato:
echo date('l F jS, Y (m-d-Y)', strtotime('+3 months', strtotime($DateToAdjust)));
fuente