2016-07-18 2 views
3

Я ищу функциональность, которая будет делать противоположноеPHP: получить будний число месяца

strtotime("third monday"); 

т.е. функции, которая подается метку времени и возвратит день недели число месяца.

Так что если сегодня 18.07.2016, в идеале функция должна возвращать «3» (т. Е. Третий понедельник июля).

Я могу получить сам будний день, используя дату («D», [timestamp]), но я не уверен, как рассчитать, что на самом деле это третий в этом месяце.

Неужели кто-нибудь пытался сделать что-нибудь подобное раньше?

+0

Это не так сложно, как вы думаете. Ответ не зависит от конкретного буднего дня. То есть, 7-е число месяца всегда 1-е, а 8-е число месяца - это что-то второе и т. Д. Итак, вы в основном разделяете на 7. См. Ответ мистера Мартина. – bmb

ответ

2

Вы хотите, чтобы убедиться, что вы работаете за пределами допустимого диапазона дат, но это относительно простая задача:

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

Вы должны изучить класс Carbon. Он расширяет функции даты и времени в основном на все, что вам когда-либо понадобится, в том числе удобные для чтения метки времени (т. Е. «5 минут назад»)

Эти два варианта будут полезны вам - день и неделя месяца.

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

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

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

+0

В любом случае, это однострочный: «return (int) ceil ($ this-> day/static :: DAYS_PER_WEEK);' –

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