Это можно сделать еще проще. Поскольку вы используете JavaScript, почему бы не использовать JavaScript для настройки часового пояса на клиенте?
- Хранить все время на сервере как UTC
- Служите клиенту как UTC
- Клиент использует JavaScript для настройки времени на местный часовой пояс
Это не только упрощает задачу, но и устраняет проблему с вашей моделью. Если я зарегистрировал свой аккаунт в Нью-Йорке, но приехал в Австралию, я хочу посмотреть время в соответствии с часовым поясом Австралии. Фактически, с помощью используемого вами JavaScript можно легко настроить параметры, сделав дизайн еще более динамичным. Во-вторых, вы можете избежать затрат на хранение часового пояса пользователя.
Тем не менее, если вы хотите, чтобы ваш дизайн ухудшался до браузеров, отличных от JavaScript, то вам лучше использовать полностью серверный подход, полагаясь на HTTP-куки (а не полагаться на JS для получения куки).