2010-08-27 16 views
7
$addhr = time() + (1 * 13 * 60 * 60); 
$curDateTimeMil= date("Y-m-d G:i:s",$addhr); 
echo $curDateTimeMil; 

Esto hará eco 2010-08-27 16:21:31.Obtener la fecha en php en 2 semanas

¿Cómo puedo obtener la fecha después de 2 semanas? (10 de septiembre)

+4

Por curiosidad, ¿qué esperaban '1 * 13 * 60 * 60' hace? – deceze

+0

También hay un ejemplo en la [fecha de PHP() documentación] (http://php.net/manual/en/function.date.php) cómo lograr esto. Lea el ejemplo n. ° 3. Pero strtotime sería una solución sólida (@jensgram). – hellozimi

Respuesta

22
$dateInTwoWeeks = strtotime('+2 weeks'); 

Ver strtotime().


Actualización # 1: Sí, esta es la manera perezosa para hacerlo. Sin embargo, creo que el posible impacto negativo en el rendimiento se contrarresta por el efecto positivo en la legibilidad/comprensión del código. Si el rendimiento fuera un problema, se podría cambiar a la manipulación de tiempo nativa (basada en un entero) (y agregar comentarios).


Actualización # 2: El segundo argumento opcional es la fecha de referencia. Ej .:

strtotime('+2 weeks', mktime(0, 0, 0, 2, 8, 1984)); // 8th Feb. 1984 + 2 weeks 
+0

¿cómo puedo especificar la fecha de inicio antes de obtener la fecha en 2 semanas? – anonymous123

+4

Aceptando respuestas a algunas de sus preguntas anteriores :-) O leyendo la documentación. O usando 'tiempo()'. – fredley

+0

@ anonymous123 Ver actualización # 2. – jensgram

5

Puede especificar la hora de inicio (desde donde calcular) usando mktime().

Ejemplo: Dos semanas después del 10 de septiembre de del 2010 (es decir, 14 días):

$date = date("Y-m-d", mktime(0, 0, 0, 9, 10 + 14, 2010); 

para obtener sólo la fecha (no el tiempo) de dos semanas más tarde (+14 días) a partir de hoy:

$date = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")+14, date("Y"))); 

Y esto da con tiempo de dos semanas más tarde (+14 días) a partir de ahora:

$date = date("Y-m-d G:i:s", mktime(date("G"), date("i"), date("s"), date("m"), date("d")+14, date("Y"))); 
2

Se podría agregar simplemente los segundos números de tw o semanas:

2 weeks = 2 · 7 days = 14 days 
     = 14 · 24 hours = 336 hours 
     = 336 · 60 minutes = 20160 minutes 
     = 20160 · 60 seconds = 1209600 seconds 

Así:

$curDateTimeMil += 1209600; 
// or 
$curDateTimeMil += 2 * 7 * 24 * 60 * 60; 
+0

Con la pequeña advertencia de que puede perderse el día correcto si tiene la mala suerte de caer en un cambio de horario de verano o un segundo ... :) – deceze

+1

@deceze: Eso no es un problema con el tiempo, pero con la representación del hora. – Gumbo

Cuestiones relacionadas