2010-11-12 30 views

Répondre

57

Utilisez la magie de strtotime:

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

aujourd'hui au 31 décembre, j'essayé le même code et a essayé pour soustraire 1 mois comme mentionné ci-dessus il m'a renvoyé la date du 1er décembre 2012. cependant je m'attendais à 30 novembre. Est-ce le résultat attendu ou c'est un bug? –

+0

@Mubashar Je suppose que c'est par conception! Les deux approches (les vôtres et les strtotimes) sont sans doute également valables. –

+0

Oui c'est vrai –

8

voir le code ci-dessous ...

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

OU

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

Cela ne fonctionnera pas en janvier, février, mars ou avril car le mois sera 0 ou négatif. – cypher

+8

@cypher - En fait, mktime date l'arithmétique. Si vous définissez le paramètre month sur moins de 1 mktime, vous choisissez un mois plus tôt. Si vous réglez le mois sur 0 alors mktime modifiera la date entière pour être le mois de décembre de l'année précédente. Cette arithmétique fonctionne sur tous les paramètres de mktime sauf pour le fuseau horaire. – emurano

+0

Vraiment? Désolé pour ça, je ne le savais pas. – cypher