2012-04-24 2 views
0

Я пытаюсь выяснить, как повторять определенные задачи в определенные дни через определенные промежутки времени на основе существующей даты.PHP - Рассчитать повторяющуюся дату, основанную на дне недели?

К примеру, у меня есть это:

Date        Task 
2011-01-12     MJK-0083 

Я хочу:

  1. Определить день недели, основываясь на указанной даты (в данном случае, среда)
  2. Определить которая в среду месяца (в данном случае, вторая среда)
  3. Рассчитайте дату 2-й среды июня в качестве следующей даты, когда эта задача будет выполнена

Я изучал некоторые примеры, но, хотя я могу это сделать, я не могу понять, как все это сделать. Например, я использую это для шага 1:

date('l', strtotime('2011-01-12')) 

Но я теряюсь, когда речь идет о шагах 2 и 3 ... Может кто-нибудь помочь мне?

+0

Вам нужно быть осторожным - в следующем месяце есть пять вторников, но в этом месяце их всего 4. Некоторые дни в конце месяца могут не повторяться каждый месяц. –

ответ

2

Чтобы узнать, какая среда месяца она есть, вы можете сделать это с помощью день месяца

(int)(day_of_month/7) + (day_of_month % 7 == 0 ? 0 : 1) 

Таким образом, 2012-01-12 вы получите:

(int)(12/7) + (12 % 7 == 0 ? 0 : 1) = 1 + 1 = 2 -> second Wednesday 
+0

Очень спасибо ... –

Смежные вопросы