2017-09-13 4 views
0

Est-ce que quelqu'un sait comment obtenir cela pour retourner faux?strtotime ("cinquième lundi septembre 2017") renvoie "2 octobre 2017"?

Il n'y a pas 5 lundi en septembre, cette fonction retourne: 2nd Octobre, 2017

date("jS F, Y", strtotime("fifth monday september 2017")); 
+4

Il ne va pas revenir faux. Ajoutez une autre vérification pour voir si le mois de la date retournée est le même que le mois que vous recherchez. – aynber

+4

Je veux dire, c'est le 5ème lundi du premier lundi de septembre ... semble encore mieux que de retourner faux :) Vous pouvez faire votre fn vérifier si le mois est le même ... –

+0

duplication possible de https: // stackoverflow .com/questions/4150435/php-strtotime-last-lundi-if-today-is-lundi? rq = 1 - a la même idée. –

Répondre

2

PHP de strtotime est basé sur la fonction d'analyse syntaxique de la date de GNU C (IIRC il appelle effectivement cette fonction C au lieu d'utiliser son propre mise en œuvre). De l'GNU documentation:

La mention explicite d'un jour de la semaine transmettra la date (seulement si nécessaire) pour atteindre ce jour de la semaine dans l'avenir ... Un certain nombre peut précéder un jour de la semaine article pour avancer semaines supplémentaires.

Par conséquent, vous n'obtiendrez pas un résultat erroné directement à partir de strtotime avec l'exemple fourni. Si vous voulez confirmer le résultat est le même mois, vous pouvez faire quelque chose comme:

$timestamp = strtotime("fifth monday september 2017"); 
$month = date('n', strtotime("september 1, 2017")); 
$same_month = (date('n', $timestamp) === $month); 

également from the GNU documentation, ajouter un peu de perspective:

Nos unités de mesure temporelle, de secondes sur place à des mois, sont si compliqués, asymétriques et disjonctifs pour rendre le calcul mental cohérent dans le temps tout sauf impossible ... Contrairement aux modèles plus réussis de langage et de science, qui nous permettent de faire face à l'expérience audacieusement ou au moins système de calcul temporel silencieusement et constamment encourage notre terreur du temps ... Il n'est donc pas étonnant que nous regardons souvent dans notre o wn immédiat passé ou futur, mardi dernier ou une semaine du dimanche, avec des sentiments de confusion sans défense.

-Robert Grudin, Le temps et l'art de vivre