nkdev55
@nkdev55
Full Stack Magento Developer

Как группировать материалы с учетом ч/з?

Здравствуйте!
Стоит задача группировать по дате материалы (дата события). В базе как timestamp в utc.
Вот что получилось:
5cf6a8cc6a6f7026771261.jpeg
Но нужно учитывать часовую зону пользователя. Поэтому дата немного изменится и в какие-то дни новости сместятся и окажутся в другие дни.)
Вот что у меня получилось, но никак не могу добавить ко всему этому timezone пользователя:
return Match::select('id', 'date')
            ->orderBy('date', 'asc')
            ->get()
            ->groupBy(function($val) {return Carbon::parse($val->date)->format('m-d');});
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
Immortal_pony
@Immortal_pony
В базе у вас поле типа mysql timestamp или int(11)?
В обоих случаях, примерно так:

->groupBy(\DB::raw("RIGHT(LEFT(CONVERT_TZ(`date`, '+00:00', '+10:00'), 10), 5)");

где +10:00 - это таймзона пользователя.
Если у вас unix_timestamp лежит в int(11), то перед CONVERT_TZ необходимо сделать еще FROM_UNIXTIME
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
Бекенд не знает об часовой зоне пользователя. От слова "совсем". Ему приходит UTC, он отдает UTC. Хочешь смещение - делай групировку на фронте (где она и должна быть, кстати).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы