2016-07-18 52 views
3

Ich bin für die Funktionalität suchen, der das Gegenteil von denPHP: get Wochentag Nummer des Monats

strtotime("third monday"); 

tun würde, das heißt eine Funktion, die einen Zeitstempel zugeführt wird, und würde die Wochentag Nummer des Monats zurück.

Wenn also heute der 18.07.2016 ist, sollte die Funktion idealerweise "3" (d. H. 3. Montag im Juli) zurückgeben.

Ich kann den Wochentag selbst mit Datum ("D", [Zeitstempel]), aber ich bin mir nicht sicher, wie berechnet, dass es in der Tat der dritte in diesem Monat ist.

Hat schon jemand versucht, so etwas zu tun?

+0

Es ist nicht so kompliziert, wie Sie denken. Die Antwort ist unabhängig vom spezifischen Wochentag. Das heißt, der 7. des Monats ist immer das 1. Etwas und der 8. des Monats ist immer das 2. Etwas, usw. Also teilt man grundsätzlich durch 7. Man sieht die Antwort von Herrn Martin. – bmb

Antwort

2

Sie werden Sie arbeiten in einem gültigen Datumsbereich überprüfen möchten, aber dies eine relativ einfache Aufgabe ist:

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

Sie sollten in die Carbon-Klasse schauen. Es erweitert Datum und Uhrzeit Funktionen zu im Grunde alles, was Sie jemals brauchen würden, einschließlich der menschenlesbaren Zeitstempel (dh. "5 Minuten ago")

Diese beiden würden Ihnen nützlich sein - Tag und Woche des Monats

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

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

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

+0

Es scheint trotzdem ein Einzeiler zu sein: 'return (int) ceil ($ this-> day/static :: DAYS_PER_WEEK);' –