2010-11-12 18 views
22

Necesito declarar dos fechas en formato "Ymd": $toDate y $fromDate.¿Cómo restar 4 meses de la fecha de hoy?

$toDate representa la fecha de hoy y $fromDate tiene que ser 4 meses antes que hoy.

$toDate = Date('Ymd'); 
$fromDate = ? 

¿Cómo creo $fromDate?

Respuesta

57

uso de la magia de strtotime:

$fromDate = date("Ymd", strtotime("-4 months")); 
+0

hoy en el 31 de diciembre me trató el mismo código y trató para restar 1 mes como se mencionó anteriormente, me devolvió la fecha del 1 de diciembre de 2012. Sin embargo, estaba esperando el 30 de noviembre. ¿Es el resultado esperado o es un error? –

+0

@Mubashar ¡Supongo que es por diseño! Ambos enfoques (tuyo y strtotime) son discutiblemente igualmente válidos. –

+0

Sí, eso es verdad –

8

ver el código de abajo ...

$fourmonthsback = date("Ymd", mktime(0, 0, 0, date("m")-4, date("d"), date("Y"))); 

O

$fourmonthsback = mktime(0, 0, 0, date("m")-4, date("d"), date("Y")); 
+2

Esto no funcionará en enero, febrero, marzo o abril ya que el mes será 0 o negativo. – cypher

+8

@cypher - En realidad, mktime data de la aritmética. Si configura el parámetro del mes a cualquier valor inferior a 1 mktime, elegirá un mes anterior. Si configura el mes en 0, entonces mktime modificará la fecha completa para ser diciembre del año anterior. Esta aritmética funciona en todos los parámetros de mktime excepto en la zona horaria. – emurano

+0

¿De verdad? Perdón por eso, entonces, no lo sabía. – cypher

Cuestiones relacionadas