2009-06-12 4 views
3

ich auf einem Kalender-Skript arbeitete, wo in ich brauche ein Kalenderereignis wie In der „Repeat Dienstag eines jeden Monats an jedem ersten“Wie kann ich den n-ten Wochentag ein bestimmtes Datum in PHP bestimmen

wiederholen Beispiel oben. Wie bekommst du die "1st"?

zum Beispiel heute ist Juni 12,2009 dies würde bedeuten, es ist "2. Freitag im Juni" Wie bekomme ich die "2nd"?

Vielen Dank im Voraus

Antwort

16

Division durch 7 und aufrunden:

ceil(date('j')/7); 
+0

Heh Ich versuchte zu überlegen, wie ich dieses Problem lösen könnte. Das ist mir nicht eingefallen. Sauber, elegant, +1. – cletus

+1

haha ​​ja, es dauerte eine Minute und dann war ich wie "Oh, natürlich!" – nickf

+2

Denken Sie daran, dass das Datum einen optionalen zweiten Parameter (Zeitstempel) enthält, damit diese Lösung für ein beliebiges Datum wiederverwendet werden kann. – PatrikAkerstrand

3

Dies funktioniert:

<?php 

$date = date('Y-m-d', mktime(0, 0, 0, date('m'), 1, date('y'))); 

echo date('Y-m-d', strtotime($date.'next tuesday')); 

?> 

Die erste Zeile erzeugt ein Datum am ersten Tag dieses Monats das ist. Die zweite Zeile erhält den nächsten Dienstag von $ date.

Sie können viel mehr tun siehe date und mktime und strtotime.

+0

Sie tun das Gegenteil von dem, was das OP fragt. Wieviele Freitage (oder was auch immer) gab es in diesem Monat vor diesem Datum, nicht nach dem Datum des n. Freitags? – nickf

+0

+1 ich brauchte das =) – drikoda

Verwandte Themen