2010-03-25 9 views
3

J'utilise strtotime pour trouver les entrées de la semaine précédente et de la semaine prochaine dans ma base de données, mais ce que je n'arrive pas à trouver, c'est comment trouver les six jours précédents si l'utilisateur sélectionne une date antérieure.Essayer de trouver les six jours précédents donnés n'importe quelle date

Voilà comment je sais ce précédent aujourd'hui et six jours sont:

$today = date("Y-m-d"); 
$minus6 = date('Y-m-d', strtotime('-6 days')); 

Maintenant, comment puis-je passer $ aujourd'hui avec dateString $ tel que prévu par l'entrée de mes utilisateurs? Je pensais que quelque chose comme ceci basé sur mes recherches Google, mais il ne donne aucun résultat:

$dateString = 2010-01-25; // for example 
$minus6 = date('Y-m-d', strtotime('-6 days, $dateString'); 

Suis-je manque des informations fondamentales concernant les dates, strtotime, ou quoi? Merci pour toute aide.

Répondre

1

Vous devez mettre la date réelle avant l'un des modificateurs à strtotime(). Par exemple:

$dateString = 2010-01-25; // for example 
$minus6 = date('Y-m-d', strtotime('-6 days, $dateString')); 

deviendrais: -

$dateString = "2010-01-25"; // for example 
$minus6 = date('Y-m-d', strtotime("$dateString -6 days")); 

... ou passer en tant que timestamp explicite en tant que second paramètre à StrToTime() selon la réponse de Gordon.

+0

+1. Je ne savais pas que vous pouvez faire la date et le modificateur en une seule fois. Changement de vos guillemets simples en guillemets doubles, car avec des guillemets simples $ datestring ne sera pas évalué. – Gordon

+0

Assez juste, je ne suis pas sûr s'il y a une méthode préférée appropriée moi-même. Bravo pour repérer les citations. –

+0

D'accord, ça l'a fait. Les doubles guillemets le font fonctionner. Cependant, je pense que ce qui m'a fait trébucher était la virgule entre '$ dateString, -6 jours'. – Bryan

3

Le deuxième à strtotime est param un horodatage à partir de laquelle sera calculée le premier argument:

echo date('Y-m-d', strtotime('-6 days', strtotime($dateString)); 

Mais vous pouvez aussi le faire like Gavin suggested.