Tagcarbon

Подготовка данных для календаря в Laravel

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

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

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

Continue reading

Laravel. Carbon. Timezone

В Laravel есть прекрасный пакет по работе с датами — Carbon. Я долгое время подозревал, что он мне поможет решить проблему с временными зонами на сайте — все временные метки хранятся в UTC, однако выводить данные и фильтровать нужно с учетом временной зоны пользователя (то есть из браузера).

Не стану рассказывать каким образом я получаю временную зону (может быть, напишу об этом позже), опишу вкратце как я добился хранения даты в UTC  и прозрачной работе пользователя с фильтрами времени.

Для фильтрации по времени использую следующий код:

Полученный объект  Carbon я отправляю в метод Where.

Для вывода же данных в нужной временной зоне, я использую мутаторы в Eloquent:

Временную метку я храню в сессии (напрямую использую только в качестве примера)