2016-07-18 1 views
3

Je suis à la recherche de fonctionnalités qui devraient faire le contraire dePHP: obtenir le nombre semaine du mois

strtotime("third monday"); 

dire une fonction qui est alimenté un horodatage et renverrait le numéro de semaine du mois.

Donc, si aujourd'hui c'est 18.07.2016, idéalement, la fonction devrait retourner "3" (c'est-à-dire le 3ème lundi de juillet).

Je peux obtenir le jour de la semaine lui-même en utilisant la date ("D", [timestamp]), mais je ne suis pas sûr comment calculer qu'il est en fait le troisième ce mois-ci.

Est-ce que quelqu'un a déjà essayé de faire quelque chose comme ça?

+0

Il est pas aussi compliqué que vous le pensez. La réponse est indépendante du jour de la semaine spécifique. C'est-à-dire que le 7 du mois est toujours le 1er et le 8 du mois est toujours le 2e quelque chose, etc. Donc, vous divisez essentiellement par 7. Voir la réponse de monsieur Martin. – bmb

Répondre

2

Vous voulez vérifier que vous travaillez dans une plage de date valide, mais cela est une tâche relativement simple:

$today = date('d', time()); 
echo 1 + floor(($today - 1)/7); // nth day of month 
1

Vous devriez regarder dans la classe Carbon. Il étend les fonctions de date et d'heure à pratiquement tout ce dont vous avez besoin, y compris les horodatages lisibles par l'homme (par exemple «5 minutes auparavant»)

Ces deux options vous seraient utiles: le jour et la semaine du mois.

var_dump($dt->dayOfWeek);         // int(3) 

var_dump($dt->weekOfMonth);         // int(1) 

http://carbon.nesbot.com/docs/#api-getters

+0

Il semble être un one-liner quand même: 'return (int) ceil ($ this-> day/static :: DAYS_PER_WEEK);' –