2012-03-26 21 views
50

Tengo una variable llamada $effectiveDate que contiene la fecha 2012-03-26.Agregando tres meses a una fecha en PHP

Estoy intentando agregar tres meses a esta fecha y no he tenido éxito.

Esto es lo que he intentado:

$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ó.

+5

¿Qué significa "no funcionó"? – Jon

+2

Recibo '1340649000' como respuesta, lo cual parece ser correcto. – Dogbert

+0

¿Estás seguro de que '$ effectiveDate' almacena lo que crees que almacena? [Funciona para mí] (http://codepad.org/nfHa8Oxx). – Josh

Respuesta

117

cambiarlo a que esto le dará el formato esperado:

$effectiveDate = date('Y-m-d', strtotime("+3 months", strtotime($effectiveDate))); 
+0

¿Cómo lidiar con una variable de meses? como $ meses contiene la cantidad de meses? '" + '$ months' months "' no funciona – HKK

+3

'$ offset = 5; echo date ('Ym-d', strtotime ("+ $ offset months", strtotime ('2000-01-01'))); '[Demo] (http://ideone.com/H8k7lt) –

+0

date() no use localizaciones. Mejor es strftime(). – user706420

0

El siguiente debería funcionar, pero puede que tenga que cambiar el formato:

echo date('l F jS, Y (m-d-Y)', strtotime('+3 months', strtotime($DateToAdjust))); 
5

Asumo por "no lo hizo trabajo "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 
2

Necesita 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 utilizar para la localización, es posible que desee probarlo.

0

Puede utilizar la clase de PHP SimpleDate Bibliotecas simples:

include('../code/simpleDate.php'); 
$date = new simpleDate(); 
echo $date->set($effectiveDate)->addMonth(3)->get(); 

Comprobar el library tutorials here.

2

Tchoupi's respuesta se puede hacer un poco menos detallado concatenando el argumento a favor de strtotime() de la siguiente manera:

$effectiveDate = date('Y-m-d', strtotime($effectiveDate . "+3 months")); 

(Esto se basa en los detalles de implementación de magia, pero siempre se puede ir a echar un vistazo a ellos si estás con razón desconfiados)

0

El siguiente debe funcionar, intenta esto:.

$effectiveDate = strtotime("+1 months", strtotime(date("y-m-d"))); 
echo $time = date("y/m/d", $effectiveDate); 
0

siguiente debe funcionar

$d = strtotime("+1 months",strtotime("2015-05-25")); 
echo date("Y-m-d",$d); // This will print **2015-06-25** 
Cuestiones relacionadas