Так уж получилось, что пришлось мне очень активно в последнее время перелезть с привычных лыж на Android на немного подзабытые, немного ржавенькие в некоторых местах, лыжи на PHP. Понадобилось мне сделать кастомный календарь, в который я смогу запихивать какие-то события (визуальное отображение, ну, и обработчик на jquery).

С готовыми решениями у меня как-то не сложилось. Jquery плагины все как один привязываются к полю Input, чтобы в него передавать данные, а те, что так не поступают, имеют какой-то откровенно страшный дизайн, что я в ужасе закрывал страницу.

Думаю, каждому это знакомо. Я про решение «Написать свой собственный велосипед», которому в интернет-литературе можно подобрать более красивое название «свой блекджек с шлюхами». Итак, первое, что мне необходимо, это знать — с какого дня недели начинается текущий месяц (в идеале знать неплохо, на каком числе предыдущий закончился). Второе — необходимо знать количество недель в месяце.

Итак, поехали, подумал я. Решив не изобретать велосипед с нуля, я решил что-то взять за основу. Полистав stackoverflow с вариантами для гольного PHP (это какое-то, извините, фуфуфу), я подумал — а ведь в Laravel есть неплохой плагин для работы с датами Carbon… В общем, я немного сузил поиск и нашел отличную функцию

А вот распечатанный результат этой функции:

Отлично. Перечислены недели, дата каждого понедельника и каждого воскресенья. То, что нужно!

P.S. В переменную Session::get(‘timezone’) я пихаю timezone типа Asia/Yekaterinburg при инициализации. Все даты я храню в UTC и эта переменная необходима мне для корректного отображения времен для пользователей разных временных зон.